Docker Compose实践

ProjectDaedalus

共 3230字,需浏览 7分钟

 · 2021-10-01

Docker Compose可以大大方便我们对多容器服务的管理,实现了一条命令启动多个容器服务

abstract.png

基本实践

如果期望通过docker run命令启动两个容器,则分别需要如下两条命令。如下所示

# 创建mysql容器
docker run -d \
  --name MySQL-Service \
  -p 7000:3306 \
  -v mysqlData:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_DATABASE=db1 \  
  mysql:5.7

# 创建redis容器
docker run -d \
  --name Redis-Service \
  -p 7001:6379 \
  -v /Users/zgh/Docker/Redis/Redis-Service/Data:/var/lib/data \
  redis:6.2.3-alpine3.13 \
  redis-server --requirepass 123456

而通过compose我们就可以统一管理多个容器。具体地,通过docker-compose.yml文件配置所需的多个容器服务。然后利用docker-compose命令从YAML配置文件创建并启动所有服务。下面即是一个配置mysql、redis的docker-compose.yml文件

# Compose 版本
version: '3.8'

# 定义Docker服务
services:

  # Docker服务 1    
  MySQL-Service:
    image: mysql:5.7
    container_name: MySQL-Service
    ports:
      - "7000:3306"
    volumes:
      - mysqlData:/var/lib/mysql
    environment: 
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: db1
    networks:
      # 使用名为dev_net并设置容器IP
      dev_net:
        ipv4_address: 120.120.120.13

  # Docker服务 2
  Redis-Service:
    image: redis:6.2.3-alpine3.13
    container_name: Redis-Service
    command: redis-server --requirepass 123456
    ports:
      - "7001:6379"
    volumes:
      - /Users/zgh/Docker/Redis/Redis-Service/Data:/var/lib/data
    networks:
      # 使用名为dev_net并设置容器IP
      dev_net:
        ipv4_address: 120.120.120.14

# 定义数据卷
volumes:
   mysqlData:

# 定义网络
networks:
  # 定义一个名为dev_net的网络
  dev_net:
    ipam:
      config:
        # 设置网段
        - subnet: 120.120.120.0/24

然后进入docker-compose.yml文件所在目录执行docker-compose命令

# 创建启动容器, -d选项表示以后台方式运行容器
docker-compose up -d

效果如下所示

figure 1.jpg

从下图可以看到,我们通过docker-compose.yml文件所创建的两个容器已经启动成功

figure 2.jpg

其中在docker-compose.yml这里我们还自定义了一个名为dev_net的网络,然后各容器服务使用该网络并分配一个固定IP。以便于进行容器间的内部通信

Note

  • docker compose的大多数命令需在docker-compose.yml文件所在目录下执行

figure 3.jpg

参考文献

  1. 第一本Docker书·修订版 James Turnbull著
  2. 深入浅出Docker [英]Nigel Poulton著
浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报