2023-10-23 N_Docker
Docker Compose
https://docs.docker.com/compose/gettingstarted/
Docker Compose 是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您使用一个YAML文件来配置您的应用程序的服务。然后,通过一个单一的命令,您可以根据您的配置创建并启动所有服务。
in short <容器编排管理> 就是通过配置文件管理(容器依赖, 环境变量, 映射路径, 端口等)多个容器的组件
安装
https://docs.docker.com/compose/install/linux/
For Ubuntu and Debian
安装
sudo apt-get update
sudo apt-get install docker-compose-plugin更新
sudo apt-get install docker-compose-pluginFor RPM-based distros
安装
sudo yum update
sudo yum install docker-compose-plugin更新
sudo yum install docker-compose-plugin验证
Verify that Docker Compose is installed correctly by checking the version.
docker compose version
基础概念
https://docs.docker.com/compose/features-uses/
使用Compose本质上是一个三步过程
1.Dockerfile
定义应用程序环境的 Dockerfile:Dockerfile是一个文本文件,其中包含了构建Docker容器镜像的指令和配置。 这个文件定义了您的应用程序所需的操作系统、依赖项、配置和应用程序代码。通过使用Dockerfile,您可以确保应用程序的环境在不同的地方都能够被复制和重建,而不受特定主机的影响。
2.compose.yaml
定义应用程序服务的compose.yaml文件:compose.yaml文件是一个YAML格式的配置文件,用于描述应用程序中的各种服务、网络、卷和容器配置。
您可以在这个文件中定义多个服务,例如数据库服务、redis服务、 Web服务等,并指定它们之间的依赖关系和配置。
3.启动
# 前台启动 默认使用当前目录下的docker-compose.yml文件
docker-compose up
# 后台启动
docker-compose up -d
# 后台启动 `-d` 后台的方式, -f <自定义文件> 使用指定的compose文件。
docker-compose up -f -d
# 重新构建镜像并启动
docker-compose up --build
# 只启动指定服务
docker-compose up service1 service2
Docker-compose (docker-compose.yml 配置说明)
https://docs.docker.com/compose/compose-file/
Version (Optional)
https://docs.docker.com/compose/compose-file/04-version-and-name/ 指定Docker Compose文件的版本。决定了支持的Compose功能和语法
Services (Required)
https://docs.docker.com/compose/compose-file/05-services/
这是定义各个服务的部分。每个服务是应用程序中的一个容器,可以包括容器的名称、镜像、端口映射、环境变量等
Networks
https://docs.docker.com/compose/compose-file/06-networks/
networks元素,可以配置可在多个服务之间重用的命名网络。要跨多个服务使用网络,必须使用networks属性显式授予每个服务访问权限。networks顶级元素具有提供更细粒度控制的附加语法。
networks:
mynetwork:
driver: bridge
driver_opts:
com.docker.network.bridge.name: mycustombridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/24- mynetwork: 这是自定义网络的名称,它是一个子键,用于标识网络的名称。您可以为每个自定义网络指定一个唯一的名称,以便在服务配置中引用它。
- driver: 指定网络的驱动程序。通常使用default。默认使用
bridge单个主机上的网络,overlay代表跨多个节点的网络群 - driver_opts: 这个部分允许您指定驱动程序特定的选项。
- ipam: IP地址管理的配置,它允许您指定如何为容器分配IP地址。
- config: 这是一个配置列表,包含了为容器分配IP地址的规则。
- subnet: 指定了用于这个网络的IP地址子网。容器将从该子网中分配IP地址。
Volumes
https://docs.docker.com/compose/compose-file/07-volumes/
在容器中,数据通常存储在容器的文件系统中。当容器被删除或者重新启动时,文件系统中的数据也会消失。为了使数据持久化,我们可以使用 Volumes。
用于将容器内的数据持久化到主机上, 或者用于在多个容器之间共享数据
services:
backend:
image: example/database
volumes:
- db-data:/etc/data
backup:
image: backup-service
volumes:
- db-data:/var/lib/backup/data
volumes:
db-data:
driver_opts:
type: "nfs"
o: "addr=10.40.0.199,nolock,soft,rw"
device: ":/docker/example"
db-data 会挂载到 backend 容器的 /etc/data 和 backup 容器的 /var/lib/backup/data 上
Configs
https://docs.docker.com/compose/compose-file/08-configs/
Secrets
https://docs.docker.com/compose/compose-file/09-secrets/
ports
ports 字段指定了要宿主机映射到容器的端口(宿主机端口:容器端口)。 expose 字段是用于在 Docker 容器内部暴露端口的选项,可以让其他容器连接到这些端口,但不会将它们映射到 Docker 主机上。
services:
gateway: #服务名
ports:
-"7000:7000"
nginx:
image: nginx
expose:
-"8080"
Docker-compose 常用命令
https://docs.docker.com/compose/reference/
服务控制
# 启动已停止的服务
docker-compose start
# 停止运行中的服务
docker-compose stop
# 重启服务
docker-compose restart
# 暂停服务
docker-compose pause
# 恢复暂停的服务
docker-compose unpause
配置和环境管理
# 使用指定环境文件
docker-compose --env-file .env.production up
# 使用不同的compose文件
docker-compose -f docker-compose.prod.yml up
# 验证compose文件语法
docker-compose config
# 验证并查看最终配置
docker-compose config --services
进入容器
# 进入运行中的容器
docker-compose exec service_name bash
# 以root用户进入
docker-compose exec -u root service_name bash