Docker Compose

假设我们有一百个容器,不可能一个一个去操作吧,docker-compose 是一个命令工具,可以用来批量操作容器

1. 安装 docker-compose 命令

[root@localhost ~]$ curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
[root@localhost ~]$ chmod 755 /usr/local/bin/docker-compose    # 添加可执行权限
[root@localhost ~]$ docker-compose version                     # 查看docker-compose命令的版本
docker-compose version 1.17.0-rc1, build a0f95af               # docker-compose命令区分 version 1 和 version 2 版本
docker-py version: 2.5.1                                       # version 2 版本支持更多的指令,version 1 将来会被弃用
CPython version: 2.7.13

2. 编辑 yaml 文件,该文件用于定义要被 docker-compose 操作的容器

[root@localhost ~]$ vim docker-compose.yml    # 文件名是固定的
version: "2"                           # 指定使用docker-compose命令的version2版本,不指定默认使用version1
services:                              # 指定要操作的services(服务),所有要操作的容器都要写在services下
  app1:                                # 指定容器名(这里我操作两个容器,app1和下面的app2)
    image: centos                      # 指定容器要使用的镜像,这个镜像必须是本地已经下载好了的
    ports:                             # 指定宿主机与容器的端口映射
      - "80:80"
    networks:                          # 指定容器要使用的网络,这里使用的net1要跟最下面的network相对应,最下面的network用来指定使用哪种网络模式
      - "net1"
    volumes:                           # 指定宿主机的/data目录挂载到容器的/data目录
      - /data:/data
    entrypoint: tail -f /etc/passwd    # 防止执行完docker-compose命令后容器就停止运行 app2: image: centos_with_nginx networks:
- "net2" volumes: - /data:/data entrypoint: tail -f /etc/passwd networks: # 指定容器的网络模式 net1: # 指定app1容器的网络模式,要跟上面的networks对应 driver: bridge net2: # 指定app2容器的网络模式,要跟上面的networks对应 driver: bridge

3. 使用 docker-compose 批量操作容器

[root@localhost ~]$ docker-compose up -d    # 批量生成容器,-d 表示在后台运行
[root@localhost ~]$ docker-compose ps       # 批量查看容器运行状态
[root@localhost ~]$ docker-compose stop     # 批量停止运行容器
[root@localhost ~]$ docker-compose rm -f    # 批量删除已经停止运行的容器,-f 跳过确认
[root@localhost ~]$ docker-compose --help   # 更多批量操作命令可以通过--help来查看

     

原文地址:https://www.cnblogs.com/pzk7788/p/10198617.html