Docker compose 使用

在使用docker-compose时,由于所有的容器都在同一个配置文件中定义,可以很方便地进行管理和部署,从而提高了开发效率和部署效率。同时,docker-compose还可以帮助我们管理容器之间的依赖关系,使得多个容器可以协同工作,从而构建一个完整的应用。
需要注意的是,docker-compose与docker有版本对应关系,因此在使用docker-compose时需要选择与已安装的docker版本相对应的docker-compose版本,否则可能会出现不兼容或无法正常工作的问题。建议使用与docker版本相匹配的最新版本的docker-compose。

1 安装

源码安装和pip安装是两种常见的安装方式,无论使用哪种安装方式,都需要注意docker-compose与docker的版本对应关系,以确保其能够正常运行。

1. 源码安装

源码安装通常需要从官方网站或其他可信源下载docker-compose的源代码,并按照相应的指示进行编译和安装。这种安装方式可以确保获得最新版本的docker-compose,并且可以根据自己的需求进行编译和定制。但是,源码安装需要一定的技术水平和时间成本,可能不适合所有人使用。

# daocloud下载docker-compose文件 
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 测试安装结果
docker-compose --version
2. pip安装

pip安装则是使用Python的包管理器pip来安装docker-compose。这种安装方式简单方便,可以快速获得最新版本的docker-compose。但是,pip安装可能会受到Python环境和依赖库的影响,需要确保系统中已经安装了必要的Python环境和依赖库。

sudo pip install docker-compose

2 使用示例

version: "3"  # 使用Docker Compose文件格式版本3

services:  # 定义服务列表

  redis:  # 定义redis服务
    image: redis:alpine  # 使用redis官方提供的alpine镜像
    ports:
      - "6379"  # 将redis容器的6379端口映射到主机的6379端口上
    networks:
      - frontend  # 定义容器使用的网络
    deploy:  # 定义服务的部署方式
      replicas: 2  # 定义容器副本数为2
      update_config:  # 定义更新策略
        parallelism: 2  # 最多同时更新2个容器
        delay: 10s  # 每次更新之间的时间间隔为10秒
      restart_policy:  # 定义重启策略
        condition: on-failure  # 容器失败时自动重启

  db:  # 定义db服务
    image: postgres:9.4  # 使用postgres官方提供的9.4版本镜像
    volumes:
      - db-data:/var/lib/postgresql/data  # 将主机上的db-data卷挂载到容器的/var/lib/postgresql/data目录上
    networks:
      - backend  # 定义容器使用的网络
    deploy:  # 定义服务的部署方式
      placement:
        constraints: [node.role == manager]  # 定义容器部署的约束条件,只能在manager节点上部署

networks:  # 定义网络列表
  frontend:  # 定义名为frontend的网络
  backend:  # 定义名为backend的网络

volumes:  # 定义卷列表
  db-data:  # 定义名为db-data的卷

执行 docker-compose up 命令来启动并运行整个应用程序。

3 配置详解

在 Docker Compose 中,通过编写一个 YAML 文件来描述容器的配置和启动方式。以下是一些常用的配置选项及其作用:

version

指定 Compose 的版本,也可以理解为 Docker Compose 支持的配置语法的版本。

build

指定为构建镜像上下文路径:
例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile 所构建的镜像:

version: "3.7"
services:
  webapp:
    build: ./dir

或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:

version: "3.7"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1
      labels:
        - "com.example.description=Accounting webapp"
        - "com.example.department=Finance"
        - "com.example.label-with-empty-value"
      target: prod
  • context:上下文路径。
  • dockerfile:指定构建镜像的 Dockerfile 文件名。
  • args:添加构建参数,这是只能在构建过程中访问的环境变量。
  • labels:设置构建镜像的标签。
  • target:多层构建,可以指定构建哪一层。
command

覆盖容器启动的默认命令。

command: ["bundle", "exec", "thin", "-p", "3000"]
container_name

指定自定义容器名称,而不是生成的默认名称。

container_name: my-web-container
depends_on

设置依赖关系。

  • docker-compose up :以依赖性顺序启动服务。在以下示例中,先启动 db 和 redis ,才会启动 web。
  • docker-compose up SERVICE :自动包含 SERVICE 的依赖项。在以下示例中,docker-compose up web 还将创建并启动 db 和 redis。
  • docker-compose stop :按依赖关系顺序停止服务。在以下示例中,web 在 db 和 redis 之前停止。
version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres
expose

暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数:

expose:
 - "3000"
 - "8000"
healthcheck

用于检测 docker 服务是否健康运行。

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"] # 设置检测程序
  interval: 1m30s # 设置检测间隔
  timeout: 10s # 设置检测超时时间
  retries: 3 # 设置重试次数
  start_period: 40s # 启动后,多少秒开始启动检测程序
network_mode

设置网络模式。

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
ulimits

覆盖容器默认的 ulimit。

ulimits:
  nproc: 65535
  nofile:
    soft: 20000
    hard: 40000
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。它使用 YAML 文件来描述应用程序的服务、网络和卷等配置。通过 Docker Compose,您可以轻松地管理和编排多个容器,以创建复杂的应用程序。 以下是使用 Docker Compose 的一般步骤: 1. 创建一个名为 `docker-compose.yml` 的 YAML 文件,并在文件中定义您的服务。每个服务都应该包括一个容器映像、容器名称、端口映射等配置。 例如,以下是一个简单的 `docker-compose.yml` 的示例: ```yaml version: '3' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html db: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=root ``` 上述示例中定义了两个服务:`web` 和 `db`。`web` 服务使用 Nginx 镜像,并将容器的 80 端口映射到主机的 8080 端口,还将主机上的 `./html` 目录挂载到容器的 `/usr/share/nginx/html` 目录。`db` 服务使用 MySQL 镜像,并设置了 `MYSQL_ROOT_PASSWORD` 环境变量。 2. 在终端中进入包含 `docker-compose.yml` 文件的目录,并运行以下命令来启动服务: ```bash docker-compose up ``` 此命令将会下载所需的容器镜像(如果不存在),然后创建和启动相应的容器。 3. 如果需要在后台运行服务,可以使用 `-d` 参数: ```bash docker-compose up -d ``` 4. 若要停止正在运行的服务,可以运行以下命令: ```bash docker-compose down ``` 这将停止并删除相关的容器。 这只是 Docker Compose 的基本用法,您可以根据需要在 `docker-compose.yml` 文件中添加更多的服务和配置。有关更详细的信息和其他用法,请参阅 Docker Compose 的官方文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值