编写docker-compose.yml文件
[root@bogon nginx]# vim docker-compose.yml
version: '2.0'
services:
nginx:
restart: always
image: nginx
ports:
- 8080:80
- 443:443
volumes:
- "./conf.d:/etc/nginx/conf.d"
- "./log:/var/log/nginx"
- "./www:/var/www"
- "/etc/letsencrypt:/etc/letsencrypt"
参数说明
- version:版本号,好像我这上面2和2.0有区别,不能写成2,写成2的话,docker-compose up -d 时会报错,提示版本号要写成2.0的样子,不过有的地方我看着直接写成2也是可以的,可能是我的docker-compose版本不一致
- service:就是要定义的docker容器
- nginx:容器的名称
- restart:设置为always,表明此容器应该在停止的情况下总是重启,比如,服务器启动时,这个容器就跟着启动,不用手动启动,服务器启动之后,进入到docker-compose.yml文件路径下,执行docker-compose ps可以看到,该容器正在运行
- image:这个是需要依赖的容器,也就是nginx软件,可以到docker官方镜像上找到最新版的镜像
- ports:这个是容器自己运行的端口号和需要暴露的端口号。比如: - 8080:80,表示容器内运行着的端口是80,把端口暴露给8080端口,从外面访问的是8080端口,就能自动映射到80端口上
- volumes:这个是数据卷。表示数据、配置文件等存放的位置。(- . 这个表示docker-compose.yml当前目录位置开始创建这个文件)
运行构建镜像
如果配置文件没有出错,执行如下命令(在docker-compose.yml当前目录)
[root@rainbow nginx]# docker-compose up -d
Creating nginx_nginx_1 ...
Creating nginx_nginx_1 ... done
查看容器运行状态
[root@rainbow nginx]# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------
nginx_nginx_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:8086->80/tcp
[root@rainbow nginx]#
启动、停止容器
[root@rainbow nginx]# docker-compose stop
Stopping nginx_nginx_1 ... done
[root@rainbow nginx]#
- 说明:docker-compose stop,如果没有指定容器,则会把docker-compose.yml文件中配置的所有容器停止。如果只想停止某个容器,则需要指定容器名。使用docker-compose ps列出所有容器:
[root@rainbow nginx]# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------
nginx_nginx_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:8086->80/tcp
[root@rainbow nginx]#
看得出,容器名为nginx,注意,是nginx,不是nginx_nginx_1。然后就可以停止容器了
[root@rainbow nginx]# docker-compose stop nginx
Stopping nginx_nginx_1 ... done
[root@rainbow nginx]#
删除容器
[root@rainbow nginx]# docker-compose rm nginx
Going to remove nginx_nginx_1
Are you sure? [yN] y
Removing nginx_nginx_1 ... done
[root@rainbow nginx]#
在conf.d文件夹下新建 .conf 配置文件,要想配置文件生效,1 重启 容器 2 直接 docker exec -it 3ba5c4ff5a32 /etc/init.d/nginx reload (进入容器 执行相应的命令)