docker-compose详解(介绍、快速入门、实例)

一、docker compose概述

Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景

二、安装docker-compose

如果能访问公网,可以直接通过官方下载:
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

三、docker-compose.yaml文件

介绍工作中常用的几个参数:
    version           # 指定 compose 文件的版本,必写
    services          # 定义所有的 service 信息, 必写
        image         # 镜像名称或镜像ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
        restart: always # 容器总是重新启动。
        container_name # 容器名
        volumes       # 挂载,可用于挂载配置文件,data等
        command       # 容器内执行什么命令
        ports         # 对外暴露的端口
        environment   # 添加环境变量
        network_mode  # 设置网络连接模式
        如:
        network_mode: "bridge"
        network_mode: "host"
        network_mode: "none"
        network_mode: "service:[service name]"
        network_mode: "container:[container name/id]"

四、部署示例

docker-compose.yml部署mysql

  1. 编写docker-compose.yml文件
version: '3.6'

services:
    mysql:
      image: mysql:5.7
      container_name: 'mysql'  
      ports:
        - "0.0.0.0:3306:3306"
      restart: always
      environment:
        MYSQL_USER: root
        MYSQL_ROOT_PASSWORD_FILE: /run/secrets/my_secret_pwd
         (此处用密码文件存储密码,需要将密码文件挂载到容器中)
      volumes:
        - "./data/:/var/lib/mysql"
        - "/run/secrets/my_secret_pwd:/run/secrets/my_secret_pwd"
  1. 在docker-compose.yml文件所在目录下执行:
docker-compose up -d
#启动运行,如果已有镜像会直接运行,如果不存在镜像,会先拉取镜像再启动
docker-compose常用命令
常用命令
介绍
docker-compose config -q验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose ps显示所有容器
docker-compose up -d构建启动容器
docker-compose down删除当前容器(数据也会清除,慎用)
docker-compose logs service_name查看指定service的日志
docker-compose logs -f service_name查看指定service的实时日志
docker-compose pause service_name暂停指定服务(停止提供服务,但是数据仍在)
docker-compose unpause service_name恢复指定服务
docker-compose stop service_name停止指定服务的容器
docker-compose start service_name启动指定服务的容器
docker-compose restart service_name重启指定服务
docker-compose rm service_name删除指定服务的容器(删除前需关闭此容器)

若用docker-compose部署服务,需要合理规避以下几点问题:

  1. 若services关联的有数据库,应将数据库单独分离出来(再写一个docker-compose.yaml文件部署数据库),避免和其他services写在同一个docker-compose.yaml文件中

  2. 多个services之间相互关联,有强依赖性时(缺少任何一个services,整个服务都无法正常运行),可共用一个docker-compose.yaml文件

  3. 若services之间仅是关联关系,没有强依赖性,可单独运行并提供服务时,建议也将各个服务分离出来,便于后期维护、拓展

  4. docker-compose.yml文件中如果涉及到密码等敏感信息,都建议采用secrets字段,通过文件保存密码,再将密码文件权限设置为600

Docker ComposeDocker官方的开源项目,用于实现对Docker容器集群的快速编排。它可以管理多个Docker容器,将它们组成一个应用。为了使用Docker Compose,你需要定义一个YAML格式的配置文件docker-compose.yml,其中包含了多个容器之间的调用关系。通过简单的命令,你可以同时启动或关闭这些容器Docker Compose由Python编写,并调用Docker服务提供的API来管理容器。因此,只要所操作的平台支持Docker API,就可以利用Compose进行容器编排和管理。 Docker Compose将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。一个工程可以包含多个服务,每个服务定义了容器运行的镜像、参数和依赖关系。一个服务可以包括多个容器实例。需要注意的是,Docker Compose并没有解决负载均衡的问题,因此你可能需要借助其他工具来实现服务发现和负载均衡,比如Consul。 总结来说,Docker Compose是一个功能强大的工具,可以帮助你快速编排和管理容器集群,实现应用的部署和扩展。使用Compose,你可以通过简单的配置文件定义容器之间的关系,然后使用命令轻松地启动、停止和管理这些容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [深入浅出之Docker Compose详解](https://blog.csdn.net/qq_43649937/article/details/131073227)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Docker 容器编排之 --- docker-compose 详解](https://blog.csdn.net/shenyuanhaojie/article/details/121713626)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值