一起学docker系列之十七Docker Compose 与手动操作的比较与优势分析

1 前言

在当今容器化应用的开发与部署中,容器编排工具的选择对于简化流程、提高效率至关重要。本文将探讨在不使用 Docker Compose 与使用 Docker Compose 两种场景下,针对多个容器的启动、管理和交互所涉及的差异。通过对比手动执行 docker run 命令与使用 docker-compose.yml 文件定义服务的方式,突出了 Docker Compose 在简化容器编排和管理方面的优势。让我们深入探索这两种方法的异同,以及为何 Docker Compose 成为众多开发者和运维人员的首选工具。
在这里插入图片描述

2 不使用 Docker Compose

在不使用 Docker Compose 的情况下,您需要手动运行多个 docker run 命令,依次启动各个容器,并手动管理它们的交互和依赖关系。以下是演示步骤:

2.1 启动 MySQL 容器

docker run -d --name mysql_container -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -e MYSQL_ALLOW_EMPTY_PASSWORD=no \
  -e MYSQL_DATABASE=db2021 \
  -e MYSQL_USER=test \
  -e MYSQL_PASSWORD=test123 \
  -v /app/mysql/db:/var/lib/mysql \
  -v /app/mysql/conf/my.cnf:/etc/my.cnf \
  -v /app/mysql/init:/docker-entrypoint-initdb.d \
  --network=my_net \
  mysql:5.7 --default-authentication-plugin=mysql_native_password

2.2 启动 Redis 容器

docker run -d --name redis_container -p 6379:6379 \
  -v /app/redis/redis.conf:/etc/redis/redis.conf \
  -v /app/redis/data:/data \
  --network=my_net \
  redis:6.0.8 redis-server /etc/redis/redis.conf

2.3 启动微服务容器

docker run -d --name microservice_container -p 6001:6001 \
  -v /app/microService:/data \
  --network=my_net \
  --link redis_container:redis \
  --link mysql_container:mysql \
  my_microService:1.0

这样,您便完成了手动启动三个容器的过程,但是在容器的启动顺序和管理上,需要手动执行多个命令,且容器间的连接需要通过 --link--network 参数手动指定。

3 使用 Docker Compose

与手动执行多个命令相比,使用 Docker Compose 将会更加简单和高效。

提供了一个示例的 docker-compose.yml 文件,

version: "3"

services:
  microService:
    image: my_microService:1.0
    container_name: ms01
    ports:

   - "6001:6001"
     lumes:
        - /app/microService:/data
          tworks: 
             - my_net 
               pends_on: 
                  - redis
                    mysql

  redis:
    image: redis:6.0.8
    ports:

   - "6379:6379"
     lumes:
        - /app/redis/redis.conf:/etc/redis/redis.conf
          /app/redis/data:/data
              networks: 
                -my_net 
              command: redis-server /etc/redis/redis.conf

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db2021'
      MYSQL_USER: 'test'
      MYSQL_PASSWORD: 'test123'
    ports:

   - "3306:3306"
     umes:
        - /app/mysql/db:/var/lib/mysql
          app/mysql/conf/my.cnf:/etc/my.cnf
             - /app/mysql/init:/docker-entrypoint-initdb.d
               works:
                  - my_net 
                    mmand: --default-authentication-plugin=mysql_native_password #解决外部无法访问

networks: 
   my_net : 

其中定义了三个服务(microService、redis、mysql)以及它们的配置、网络设置和依赖关系。通过执行以下命令,即可根据该文件启动所有服务:

docker-compose up -d

这一命令将会根据 docker-compose.yml 文件中的定义自动创建、连接和启动三个容器。Docker Compose 会自动处理容器的启动顺序和连接关系,确保容器能够按照指定的依赖关系启动。此外,使用 Docker Compose 还能够通过 docker-compose stop 命令一键停止所有容器,简化了管理和维护的流程。

4 使用 Docker Compose 的优势

简化部署流程: 只需运行 docker-compose up 命令,即可根据定义在 docker-compose.yml 中的服务关系自动启动所有容器。
容器间连接管理: Docker Compose 会自动处理容器之间的连接和依赖关系,确保服务按照指定顺序启动。
统一管理: 通过一个文件统一管理多个容器,易于维护和更新。

这种方法使得整个应用程序的部署和管理变得更加简单和高效。Docker Compose 自动管理容器之间的连接和启动顺序,减少了人为错误的可能性,提高了开发和部署的效率。

5 结语

使用 Docker Compose 相较于手动运行 docker run 命令具有诸多优势。它通过定义简明的 docker-compose.yml 文件,自动化了多个容器的创建、连接和启动过程,简化了容器间的交互和依赖管理。相比之下,手动操作容器的启动需要更多的命令和额外的注意事项,容易导致错误和管理困难。Docker Compose 提供了更高效、更一致的容器化部署方式,为开发团队带来了便捷和可维护性,并成为构建复杂应用程序的首选工具之一。

参考地址

Docker Compose overview | Docker Docs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cooldream2009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值