目录
四、Docker compose常用命令(yaml文件中的参数)
一、概述
Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说:弄个脚本就搞定啦;要的就是这个思路,Docker提供了一个叫Docker Compose的工具。
Docker Compose 是一个用于定义和运行多个容器服务的 Docker 应用程序工具;搭配使用 YAML 文件来配置应用程序服务,然后运行Docker Compose命令,一键启动所有容器服务。
二、YAML文件的格式要求
①、层级分明:使用首部空格代表层级关系
②、使用键值对key-value来表示参数,可以是一个key-value或者key-values
③、使用#号代表注释
④、不知道Tab制表符
⑤、“-”、“:”后面的valuesu需要空一格
⑥、一个yaml文件中,可以定义多i个资源模块
三、Docker compose配置常用字段
字段 | 描述 |
build 、dockerfile 、context | 指定Dockerfile文件名构建镜像上下文路径 |
image | 指定镜像 |
command | 执行命令,覆盖默认命令 |
container name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale |
deploy | 指定部署和运行服务相关配置,只能在Swarm模式使用 |
environment | 添加环境变量 |
networks | 加入网络 |
ports | 暴露容器端口,与-p相同,但端口不能低于60 |
volumes | 挂载宿主机路径或命令卷 |
restart | 重启策略,默认no,always,no-failure,unless-stoped |
hostname | 容器主机名 |
四、Docker compose常用命令(yaml文件中的参数)
字段 | 描述 |
build | 重新构建服务 |
ps | 列出容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器的启动数量 |
top | 显示容器进程 |
logs | 查看容器输出 |
down | 删除容器、网络、数据卷和镜像 |
up | 创建和启动容器 |
stop/start/restart | 停止/启动/重启网络 |
五、安装Docker compose
1、下载
### 下载
[root@zwb_docker ~]# curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` >/usr/local/bin/docker-compose
### 给与执行权限
[root@zwb_docker docker_compose]# cd /usr/local/bin/
[root@zwb_docker bin]# chmod +x docker-compose
[root@zwb_docker bin]# ll
总用量 8092
-rw-r--r-- 1 root root 9 10月 22 01:00 docker
-rwxr-xr-x 1 root root 8278112 10月 22 01:06 docker-compose
[root@zwb_docker bin]# yum -y install tree.x86_64 ## 安装一个tree的小工具
2、 创建“.yaml”文件
[root@zwb_docker bin]# cd /
[root@zwb_docker /]# mkdir docker_compose
[root@zwb_docker /]# cd docker_compose/
[root@zwb_docker docker_compose]# vim docker-compose.yaml
version: '3'
services:
nginx:
hostname: nginx
build:
context: ./nginx
dockerfile: Dockerfile
ports :
- 1100:80
- 1111:443
networks:
- mynet
volumes:
- ./wwwroot/:/usr/local/nginx/html
networks:
mynet:
3、创建Dockerfile文件
[root@zwb_docker docker_compose]# mkdir nginx
[root@zwb_docker docker_compose]# cd nginx/
[root@zwb_docker nginx]# vim Dockerfile
FROM centos:7 as build
ADD nginx-1.15.9.tar.gz /mnt
WORKDIR /mnt/nginx-1.15.9
RUN yum -y install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
yum clean all &&\
sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
./configure --prefix=/usr/local/nginx &> /dev/null && \
make &>/dev/null && \
make install &>/dev/null && \
rm -fr /mnt/nginx-1.15.9
FROM centos:7
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off"]
[root@zwb_docker nginx]# rz -E
[root@zwb_docker docker_compose]# tree ./
./
├── docker-compose.yaml ## 创建模板脚本
└── nginx
├── Dockerfile ## 创建容器脚本
└── nginx-1.15.9.tar.gz ## 复制源码包
4、制作镜像
[root@zwb_docker docker_compose]# docker-compose -f docker-compose.yaml up -d
Building nginx
Step 1/9 : FROM centos:7 as build
---> eeb6ee3f44bd
Step 2/9 : ADD nginx-1.15.9.tar.gz /mnt
---> Using cache
---> 149e658c2e1d
Step 3/9 : WORKDIR /mnt/nginx-1.15.9
---> Using cache
---> a365b54d24c5
Step 4/9 : RUN yum -y install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && yum clean all && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx &> /dev/null && make &>/dev/null && make install &>/dev/null && rm -rf /mnt/nginx-1.15.9
---> Running in 6153d1abc8e0
Loaded plugins: fastestmirror, ovl
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Removing intermediate container 6153d1abc8e0
---> a4abe0a5169a
Step 5/9 : FROM centos:7
---> eeb6ee3f44bd
Step 6/9 : EXPOSE 80
---> Running in 9524a8a858fa
Removing intermediate container 9524a8a858fa
---> c1953914c36b
Step 7/9 : VOLUME ["/usr/local/nginx/html"]
---> Running in ccbd7c499894
Removing intermediate container ccbd7c499894
---> fd9487e9f332
Step 8/9 : COPY --from=build /usr/local/nginx /usr/local/nginx
---> fcb219e09061
Step 9/9 : CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off"]
---> Running in d29d1f145a05
Removing intermediate container d29d1f145a05
---> b300a241d07e
Successfully built b300a241d07e
Successfully tagged dockercompose_nginx:latest
WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating dockercompose_nginx_1 ...
Creating dockercompose_nginx_1 ... done