Docker 使用Docker-Compose编排容器
简介:
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。
Docker与Compose的兼容性:
compose文件格式版本 docker版本 3.7 18.06.0+ 3.6 18.02.0+ 3.5 17.12.0+ 3.4 17.09.0+ 3.3 17.06.0+ 3.2 17.04.0+ 3.1 1.13.1+ 3.0 1.13.0+ 2.3 17.06.0+ 2.2 1.13.0+ 2.1 1.12.0+ 2.0 1.10.0+ 1.0 1.9.1.+
安装:
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
查看:
[root@localhost bin]# docker-compose --version docker-compose version 1.22.0, build f46880fe
compose命令选项:
-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml ,可以多次指定。 -p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。 --x-networking 使用 Docker 的可拔插网络后端特性 --x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge --verbose 输出更多调试信息。 -v, --version 打印版本并退出。
compose命令:
build 构建或重建服务
help 命令帮助
kill 杀掉容器
logs 显示容器的输出内容
port 打印绑定的开放端口
ps 显示容器
pull 拉取服务镜像
restart 重启服务
rm 删除停止的容器
run 运行一个一次性命令
scale 设置服务的容器数目
start 开启服务
stop 停止服务
up 创建并启动容器
Code:
wordpress.yml
version: '3' services: web: image: wordpress:4 environment: - WORDPRESS_DB_PASSWORD=password - WORDPRESS_AUTH_KEY=changeme - WORDPRESS_SECURE_AUTH_KEY=changeme - WORDPRESS_LOGGED_IN_KEY=changeme - WORDPRESS_NONCE_KEY=changeme - WORDPRESS_AUTH_SALT=changeme - WORDPRESS_SECURE_AUTH_SALT=changeme - WORDPRESS_LOGGED_IN_SALT=changeme - WORDPRESS_NONCE_SALT=changeme - WORDPRESS_NONCE_AA=changeme ports: - 80:80 depends_on: - mysql deploy: replicas: 3 restart_policy: condition: on-failure mysql: image: mysql:5.7 environment: - MYSQL_ROOT_PASSWORD=password deploy: restart_policy: condition: on-failure
wordpress.yml 定义了包含两个服务的Wordpress应用
web服务:部署3个实例的wordpress:4容器
mysql服务:部署1个实例的mysql:5.7容器
注意:
restart_policy:定义服务的重启条件 (v1/v2中restart指令不再支持)
deploy与depends_on不要搞混,一个配置,一个依赖。
命令:
使用docker-compose构建并运行应用:
# 若是要后台运行: $ docker-compose up -d $ docker-compose up # 若不使用默认的docker-compose.yml 文件名: $ docker-compose -f server.yml up -d
停止删除容器:
#必须跟docker-compose.yml的文件路径中执行命令
docker-compose stop
#必须跟docker-compose.yml文件路径中执行命令
docker-compose rm
设置服务容器数量:
docker-compose scale mysql=2
总结:
不要把 docker 当做数据容器来使用,数据一定要用 volumes 放在容器外面 不要把 docker-compose 文件暴露给别人, 因为上面有你的服务器信息 多用 docker-compose 的命令去操作, 不要用 docker 手动命令&docker-compose 去同时操作 写一个脚本类的东西,自动备份docker 映射出来的数据。 不要把所有服务都放在一个 docker 容器里面
参考:
https://docs.docker.com/compose/install/#install-compose
http://www.widuu.com/docker/compose/install.html
https://blog.csdn.net/pushiqiang/article/details/78682323
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2016-07-29 MySQL安装
2013-07-29 sql 锁