容器编排Docker-Compose
·
传统版本
- 安装 Docker-compose
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
如果报错: 0curl: (7) Failed connect to get.daocloud.io:443; 拒绝连接
一般是docker版本已经内置了docker compose了,这个时候已经无需安装传统版本的docker-compose了
- 授权
sudo chmod +x /usr/local/bin/docker-compose
- 验证
docker-compose --version
- 传统版本是独立 Python 程序
- 传统版本需单独安装 (pip, apt)
新版本
- docker的最新版本已经内置的docker compose
- 查看版本号
docker compose version
- 新版本与docker捆绑,是基于Docker CLI 插件 ,使用Go 语言开发
YML文件
- 总体三层
version: '' #DockerCompose文件格式版本
services: ''#要运行的所有服务的根节点
服务1: web
#服务配置
images
restart: always #(重启策略,每次重启docker时都会重启相关的容器)
build
network
......
服务2: redis
......
服务3: xxx
......
#其他配置 网络/卷、全局规则
volumes:
networks:
confdigs:
- 启动:docker-compose up
- 后台启动:docker-compose up -d
- 重启:docker-compose restart
- 关闭:docker-compose stop
- 重新构建:docker-compose up --build
- 慎重,命名卷和绑定挂载数据不会丢失;但匿名卷很有可能丢失;容器内没有挂载的数据一定会丢失
- 文章同专栏中有很多实例可以参考
- Docker Compose V2 默认不再需要 version 字段
多容器网络
version: '3'
services:
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 123456
webapp:
image: wordpress
ports:
- "8080:80"
depends_on: # 依赖关系,定义服务启动顺序依赖:先启动 mysql,再启动 webapp
- mysql
environment:
WORDPRESS_DB_HOST: mysql # 直接使用服务名
- mysql 不是 IP 地址,而是服务名
- DockerCompose 会自动创建内部 DNS,将服务名解析为容器 IP
- 因为两个服务在同一网络,所以可以通过服务名直接通信
使用 .env 文件
- 创建 .env 文件
# .env 文件示例 MYSQL_ROOT_PASSWORD=MySecurePassword123! MYSQL_DATABASE=jumpserver MYSQL_USER=jumpserver MYSQL_PASSWORD=JumpServer@123 - 在 docker-compose.yml 中引用
# docker-compose.yml version: '3.8' services: mysql: image: mysql:8.0 container_name: jumpserver_mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} - 使用多个环境文件
# 默认使用 .env docker-compose up # 指定特定的环境文件 docker-compose --env-file .env.production up docker-compose --env-file .env.development up - 环境变量优先级
- Docker Compose 加载环境变量的顺序(从低到高优先级):
- env_file 指令指定的文件
- .env 文件(项目目录中的默认文件)
- Shell 环境变量
- environment 指令中的变量
- Compose file 中直接定义的变量
参考文章
- https://blog.csdn.net/m0_65152767/article/details/154119750
更多推荐


所有评论(0)