赞
踩
目录
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- [root@100-215 upload]# sudo chmod +x /usr/local/bin/docker-compose
- [root@100-215 upload]# cd /usr/local/bin #切换到docker-compose文件对应目录
- [root@100-215 bin]# docker -compose version #检验是否安装成功
- Docker Compose version v2.16.0
下载链接:github.com
使用xftp传输到/usr/local/upload文件夹下,这里选择的是1.26.0 的 docker-compose-Linux-x86_64
- [root@100-215 upload]# pwd #展示当前目录
- /usr/local/upload
- [root@100-215 upload]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose #剪切至usr/local/bin下,并重命名为docker-compose
- [root@100-215 upload]# sudo chmod +x /usr/local/bin/docker-compose
- [root@100-215 upload]# cd /usr/local/bin #切换到docker-compose文件对应目录
- [root@100-215 bin]# docker -compose version #检验是否安装成功
- Docker Compose version v2.16.0
因为GitHub为国外网址,所以连接不上也是很正常的,建议在线安装使用国内的daocloud进行下载(现在daocloud好像也有点问题了,下载后授权出现路由错误)。
如果出现-bash: docker-compose: 未找到命令
1、查看服务器环境变量
- [root@100-215 bin]# echo $PATH #发现没有/usr/local/bin的环境变量
- /usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/root/bin
2、进行一个软连接:
ln -s /usr/local/bin/docker-compose /bin/docker-compose
3、验证是否解决
- [root@100-215 bin]# docker-compose version
- Docker Compose version v2.16.0
这样docker-compose就安装完成了。
一文件:docker-compose.yml
两要素:
服务service:一个个应用容器示例
工程project:由一组关联的应用容器组成的一个完整的业务单元,在docker-compose.yml文件中定义。
1、编写dockerfile定义各微服务应用并构建出对应的镜像文件
2、使用docker-compose.yml定义一个完整的业务单元,安排好整体应用中的各个容器服务
3、最后,执行docker-compose up命令,来启动并运行整个应用程序,完成一键部署上线
Docker compose的常用命令:
- docker-compose -h # 查看帮助
- docker-compose up # 启动所有docker-compose服务
- docker-compose up -d # 启动所有docker-compose服务并后台运行
- docker-compose down # 停止并删除容器、网络、卷、镜像。
- docker-compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
- docker-compose ps # 展示当前docker-compose编排过的运行的所有容器
- docker-compose top # 展示当前docker-compose编排过的容器进程
-
- docker-compose logs yml里面的服务id # 查看容器输出日志
- docker-compose config # 检查配置
- docker-compose config -q # 检查配置,有问题才有输出
- docker-compose restart # 重启服务
- docker-compose start # 启动服务
- docker-compose stop # 停止服务
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
命令选项如下:
-f,–file FILE指定Compose模板文件,默认为docker-compose.yml,可以多次指定。
-p,–project-name NAME指定项目名称,默认将使用所在目录名称作为项目名。
-x-network-driver 使用Docker的可拔插网络后端特性(需要Docker 1.9+版本)
-x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker 1.9+版本)
-verbose输出更多调试信息
-v,–version打印版本并退出
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
选项包括:
-d 在后台运行服务容器
–no-color 不使用颜色来区分不同的服务的控制输出
–no-deps 不启动服务所链接的容器
–force-recreate 强制重新创建容器,不能与–no-recreate同时使用
–no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
–no-build 不自动构建缺失的服务镜像
–build 在启动容器前构建服务镜像
–abort-on-container-exit 停止所有容器,如果任何一个容器被停止,不能与-d同时使用
-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
–remove-orphans 删除服务中没有在compose文件中定义的容器
–scale SERVICE=NUM 设置服务运行容器的个数,将覆盖在compose中通过scale指定的参数
- docker-compose up 启动所有服务
- docker-compose up -d 在后台所有启动服务
- docker-compose -f docker-compose.yml up -d -f 指定使用的Compose模板文件,默认为docker-compose.yml,可以多次指定。
- [root@100-215 webapp-compose]# docker-compose ps
- NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
- web1 nginx "/docker-entrypoint.…" web1 4 minutes ago Up 4 minutes 0.0.0.0:6061->80/tcp
- web2 nginx "/docker-entrypoint.…" web2 4 minutes ago Up 4 minutes 0.0.0.0:6062->80/tcp
- web3 nginx "/docker-entrypoint.…" web3 4 minutes ago Up 4 minutes 0.0.0.0:6063->80/tcp
docker-compose stop 停止现在正在运行的容器
docker-compose stop -t -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
docker-compose -h 查看帮助
docker-compose down 停用移除所有容器及网络相关
–rmi type 删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像
-v, –volumes 删除已经在compose文件中定义的和匿名的附在容器上的数据卷
–remove-orphans 删除服务中没有在compose中定义的容器
docker-compose logs 查看服务容器的输出,-no-color来关闭颜色
docker-compose config 验证并查看compose文件配置。
docker-compose config -q 配置文件有问题才输出
docker-compose config --services 打印服务名,一行一个
docker-compose config --volumes 打印数据卷名,一行一个
docker-compose exec 与服务进行交互
docker-compose exec [options] SERVICES COMMAND [ARGS....]
-d 分离模式,后台运行命令。
–privileged 获取特权。
–user USER 指定运行的用户。
-T 禁用分配TTY,默认docker-compose exec分配TTY。
–index=index,当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务,例如:docker-compose exec –index=1 web /bin/bash ,web服务中包含多个容器
docker-compose port [options] SERVICE PRIVATE_PORT 显示某个容器端口所映射的公共端口。
选项包括:
–protocol=proto,指定端口协议,TCP(默认值)或者UDP
–index=index,如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。