记录docker-compose遇到的坑

目录

前言:

一、安装和下载

在线安装:

1、github上下载

2、daocloud下载

3、添加可执行权限

离线安装:

①在 GitHub下载对应的版本

②将下载的文件移动到bin目录

③添加可执行权限

疑难杂症:

①github连接不上 

②安装授权后,出现没有此命令

二、核心概念

1、compose使用三步骤

2、docker-compose命令详解

①docker-compose命令格式

②docker-compose up

③docker-compose ps

④docker-compose stop

⑤docker-compose -h

⑥docker-compose down

⑦docker-compose logs

⑧docker-compose config

⑨docker-compose exec

⑩docker-compose port

前言:

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。

一、安装和下载

在线安装:

1、github上下载

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

2、daocloud下载(有点问题)

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

3、添加可执行权限

[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下载对应的版本

下载链接:github.com

 使用xftp传输到/usr/local/upload文件夹下,这里选择的是1.26.0 的 docker-compose-Linux-x86_64

②将下载的文件移动到bin目录

[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连接不上 

        因为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、compose使用三步骤

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      										# 停止服务

2、docker-compose命令详解

①docker-compose命令格式

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

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,可以多次指定。

③docker-compose ps

[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 停止现在正在运行的容器

docker-compose stop -t -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)

⑤docker-compose -h

docker-compose -h 查看帮助

⑥docker-compose down

docker-compose down 停用移除所有容器及网络相关

–rmi type 删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像

-v, –volumes 删除已经在compose文件中定义的和匿名的附在容器上的数据卷

–remove-orphans 删除服务中没有在compose中定义的容器

⑦docker-compose logs

docker-compose logs 查看服务容器的输出,-no-color来关闭颜色

⑧docker-compose config

docker-compose config 验证并查看compose文件配置。

docker-compose config -q 配置文件有问题才输出

docker-compose config --services 打印服务名,一行一个
docker-compose config --volumes 打印数据卷名,一行一个

⑨docker-compose exec

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

docker-compose port [options] SERVICE PRIVATE_PORT 显示某个容器端口所映射的公共端口。

选项包括:

–protocol=proto,指定端口协议,TCP(默认值)或者UDP

–index=index,如果同意服务存在多个容器,指定命令对象容器的序号(默认为1)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值