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

https://www.jianshu.com/p/2217cfed29d7

https://blog.csdn.net/pushiqiang/article/details/78682323

posted @   hongdada  阅读(1605)  评论(0编辑  收藏  举报
编辑推荐:
· 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 锁
点击右上角即可分享
微信分享提示