一.docker compose的文件结构
一个主机之上的多个容器的管理和编排
YAML是一种标记语言很直观的数据序列化格式
文件格式及编写注意事项
不支持制表符tab键缩进,需要使用空格缩进
通常开头缩进2个空格
字符后缩进1个空格,如冒号、逗号、横杆
用#号注释
如果包含特殊字符用单引号引起来
布尔值必须用引号括起来
实例:
house:
family:
name: jieni
parent:
- xiaohuolong
- miaowazhongzi
children:
- xiaozhi
- xiaomei
address:
number: 123132131232131
street:
city: hulunbeier
二.docker compose配置常用字段
字段 | 描述 |
---|---|
version | 指定此yml文件基于的compase的版本 |
services | 指定创建容器的服务选项,服务名:例如nginx等 |
build | 指定构建镜像上下文路径(是一个路径基于docker-compos.yuml文件的所在目录) |
context | 上下文路径 |
dockerfile | 指定构建镜像的 Dockerfile 文件名 |
image | 指定容器运行的镜像 |
command | 执行命令,覆盖默认命令 |
container_name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale(扩展,使用副本集) |
deploy | 指定部署和运行服务相关配置,只能在Swarm模式使用 |
environment | 添加环境变量 |
networks | 配置网络,指定网卡设备等(四种网络模式) |
ports | 暴露容器端口,与-p相同,但端口不能低于60;指定端口也不能使用scale |
volumes | 挂载宿主机路径或命令卷 |
restart | 重启策略,定义是否重启容器;no(默认,不重启),always(总是重启),no-failure(退出状态非0时重启) |
hostname | 容器主机名 |
三.docker compose常用命令
字段 | 描述 |
---|---|
build | 重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器启动数量(弹性伸缩时增加服务器结合consul一起部署) |
top | 显示正在运行的容器进程 |
logs | 查看服务容器的输出(生产环境中不建议直接查看所有日志) |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restatr | 停止/启动/重启服务 |
四.部署compose
[root@localhost ~]# cp docker-compose /usr/local/bin 加入环境
[root@localhost ~]# cd /usr/local/bin/
[root@localhost bin]# chmod +x docker-compose 授予执行权限
[root@localhost docker-compose]# tree
.
├── docker-compose.yml
├── nginx
│ ├── dockerfile
│ └── nginx-1.15.9.tar.gz
└── wwwroot
└── index.html
2 directories, 4 files
[root@localhost docker-compose]# vim docker-compose.yml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: dockerfile
ports:
- 666:80
- 667:443
networks:
- cluster
volumes:
- ./wwwroot:/usr/local/nginx/html
networks:
cluster:
[root@localhost docker-compose]# cd nginx/
[root@localhost nginx]# ls
dockerfile nginx-1.15.9.tar.gz
[root@localhost nginx]# vim dockerfile
FROM centos:7
RUN yum install pcre-devel zlib-devel gcc gcc-c++ make -y
ADD nginx-1.15.9.tar.gz /opt/data/nginx
WORKDIR /opt/data/nginx/nginx-1.15.9
RUN ./configure --prefix=/usr/local/nginx
RUN make && make install -j4
VOLUME ["/usr/local/nginx/html"]
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
[root@localhost nginx]# cd ..
[root@localhost docker-compose]# vim wwwroot/index.html
this is whywhywhywhy
[root@docker ~/test/docker-compose]# docker-compose -f docker-compose.yml up -d
[root@localhost mnt]# mkdir compose:nginx
[root@localhost mnt]# cd compose\:nginx/
[root@localhost compose:nginx]# ls
[root@localhost compose:nginx]# touch docker-compose.yml
[root@localhost compose:nginx]# mkdir nginx
[root@localhost compose:nginx]# mkdi
mkdict mkdir
[root@localhost compose:nginx]# mkdir wwwroot
[root@localhost compose:nginx]# tree
.
├── docker-compose.yml
├── nginx
└── wwwroot
2 directories, 1 file
[root@localhost compose:nginx]#
version: '3'
services:
nginx:
hostname:nginx
build:
context:./nginx
dockerfile: dockerfile
ports:
- 1216:80
- 1217:443
networks:
- cluster
volumes:
- ./wwwroot:/usr/local/nginx/html
networks:
cluster:
FROM centos:7
RUN yum install pcre-devel zlib-devel gcc gcc-c++ make -y
ADD nginx-1.15.9.tar.gz /opt/data/nginx
WORKDIR /opt/data/nginx/nginx-1.15.9
RUN ./configure --prefix=/usr/local/nginx
RUN make && make install -j4
VOLUME ["/usr/local/nginx/html"]
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]
[root@localhost compose:nginx]# tree
.
├── docker-compose.yml
├── nginx
│?? ├── dockerfile
│?? └── nginx-1.15.9.tar.gz
└── wwwroot
└── index.html
2 directories, 4 files
[root@localhost docker-compose]# docker-compose -f docker-compose.yml up -d