暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker-compose基础(一)

运维开发圈 2019-09-12
296


docker-compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,可以从配置中创建并启动所有服务。

docker-compose步骤

  1. 使用Dockerfile定义应用程序的环境.

  2. docker-compose.yml
    中定义构成应用程序的服务.

  3. 运行docker-compose up
    启动并运行整个应用程序。

安装compose

  1. 下载当前稳定版本并赋予执行权限

 sudo curl -L "https://github.com/docker/compose/

releases/download/1.24.1/

docker-compose-$(uname -s)-$(uname -m)"

-o usr/local/bin/docker-compose

 
 sudo chmod +x usr/local/bin/docker-compose
  1. 设置环境变量

 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
 #或者:
 vim /etc/profile
 export COMPOSE=/usr/local/bin/
 export PATH=$COMPOSE:$PATH
 
 #执行: source /etc/profile 生效.

更新

从版本1.3开始,Compose使用Docker标签来跟踪容器,并且需要重新创建容器以添加标签。如果Compose检测到没有标签创建的容器,它将拒绝运行.

卸载

 sudo rm /usr/local/bin/docker-compose
 #或者:
 pip uninstall docker-compose


compose命令详解

build命令

 Usage: build [options] [--build-arg key=val...] [SERVICE...]
 选项:
 --compress    使用gzip压缩构建上下文
 --force-rm    始终移除中间容器
 --no-cache    构建镜像时不要使用缓存
 --pull   下载最新版本的镜像
 -m, --memory MEM  设置构建容器的内存限制
 --build-arg key=val   设置服务的构建时候的变量
  --parallel      并行构建镜像

注意: 如果更改服务的Dockerfile,请运行docker-compose build
进行重建。

bundle命令

 Usage: bundle [options]
 选项:
 --push-images   自动推送构建以后的服务的镜像
 -o, --output PATH   将包文件写入的路径

config命令

 Usage: config [options]
 选项:
 --resolve-image-digests  镜像摘要的标记
 --no-interpolate  不要插入环境变量
 -q, --quiet      仅验证配置,不打印任何内容
 --services    打印服务名称,每行一个
 --volumes     打印存储卷名称,每行一个
 

 --hash="*"    打印服务配置哈希,每行一个。

设置“service1,service2”

以获取指定服务的列表或使用通配符来显示所有服务。

create命令

 为服务创建容器
 Usage: create [options] [SERVICE...]
 选项:
 --force-recreate    即使没有更改配置,也要重新创建容器
 --no-recreate    如果容器已存在,请不要重新创建。
 --no-build     即使容器丢失,也不要构建镜像.
  --build    在创建容器之前构建镜像

down命令

 Usage: down [options]
 选项:
 --rmi type   删除镜像。类型:                             
    'all':删除任何服务使用的所有图像。                   
    'local':仅删除没有的图像                              
    自定义标签由image字段设置。
   
 -v, --volumes   删除volumes中声明的存储卷
 --remove-orphans  删除没有在文件中定义的服务的容器
 -t, --timeout TIMEOUT 以秒为单位指定关闭超时(默认10s)

默认删除的内容:在Compose文件中定义的服务的容器和定义的服务的网络.

注意:永远不会删除定义为外部的网络和存储卷.

events命令

 Usage: events [options] [SERVICE...]
 选项:
 --json   将事件输出为json对象流

exec命令

 Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
 选项:
 -d, --detach 在后台运行命令
 --privileged 为进程提供扩展权限
 -u, --user USER 以该用户身份运行该命令
 -T 禁用伪tty分配。默认情况下`docker-compose exec`分配TTY
 
 --index=index   容器的索引.
 -e, --env KEY=VAL  设置环境变量
 -w, --workdir DIR   此命令的workdir目录的路径

images命令

 Usage: images [options] [SERVICE...]
 选项:
 -q, --quiet   仅显示ID

kill命令

 Usage: kill [options] [SERVICE...]
 选项:
 -s SIGNAL   SIGNAL信号发送到容器,默认信号是SIGKILL
 
 通过发送SIGKILL信号强制运行容器停止:
 docker-compose kill -s SIGINT

logs命令

 Usage: logs [options] [SERVICE...]
 选项:
 --no-color 产生单色输出
 -f, --follow 按照日志输出
 -t, --timestamps 显示时间戳
 --tail="all" 每个容器的日志末尾显示的行数

pause命令

 Usage: pause [SERVICE...]
 暂停运行服务的容器: docker-compose unpause

port命令

 Usage: port [options] SERVICE PRIVATE_PORT
 选项:
 --protocol=proto     tcp或udp.默认是tcp
 --index=index       容器的索引.

ps命令

 Usage: ps [options] [SERVICE...]
 选项:
 -q, --quiet  仅显示id
 --services   显示服务
 --filter KEY=VAL  按属性过滤服务
 -a, --all   显示所有已停止的容器

pull命令

 Usage: pull [options] [SERVICE...]
 --ignore-pull-failures  拉取镜像失败时忽略
 --parallel  并行拉取镜像
 --no-parallel  禁用并行拉取镜像
 -q, --quiet     拉取镜像时不打印进度信息
 --include-deps 将服务声明为依赖项

push命令

 Usage: push [options] [SERVICE...]
 选项:
 --ignore-push-failures   推送镜像失败时忽略

restart命令

 Usage: restart [options] [SERVICE...]
 选项:
 -t, --timeout TIMEOUT   以秒为单位指定关闭超时

rm命令

 Usage: rm [options] [SERVICE...]
 选项:
 -f, --force  不要询问是否删除,强制删除.
 -s, --stop   在移除之前停止容器
 -v     删除附加到容器的存储卷
 
 列出所有卷,使用docker volume ls。
 任何不在卷中的数据都将丢失。
 
 删除已停止的服务容器。默认情况下,不会删除附加到容器的存储卷

run命令

 Usage:

     run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...]

[-l KEY=VALUE...]  SERVICE [COMMAND] [ARGS...]

 选项:
 -d, --detach 在后台运行容器,打印新容器名称
 --name NAME  为容器指定名称
 --entrypoint CMD 覆盖镜像的入口点
 -e KEY=VAL     设置环境变量
 -l, --label KEY=VAL 添加或覆盖标签(可多次使用)
 -u, --user="" 以指定的用户名或uid运行
 --no-deps    不要启动依赖的服务
 --rm  运行后删除容器
 -p, --publish=[] 将容器的端口发布到主机
 --service-ports 在启用并映射服务端口的情况下运行命令给主机.
 --use-aliases 在网络中使用服务的网络别名
 -v, --volume=[] 绑定一个存储卷
 -w, --workdir="" 容器内的工作目录
 
 例如:
 docker-compose run --service-ports web python manage.py shell

 

docker-compose run --publish 8080:80 -p 2022:22

-p 127.0.0.1:2021:21 web python manage.py shell

 

docker-compose run db psql -h db -U docker

 docker-compose run --no-deps web python manage.py shell

scale命令

 请使用带有--scale标志的up命令。
 Usage: scale [options] [SERVICE=NUM...]
 选项:
 -t, --timeout TIMEOUT   以秒为单位指定关闭超时
 
 设置要为服务运行的容器数。数字以service = num的形式指定为参数:
 docker-compose scale web=2 worker=3

start命令

 Usage: start [SERVICE...]
 启动服务的现有容器

stop命令

 Usage: stop [options] [SERVICE...]
 -t, --timeout TIMEOUT   以秒为单位指定关闭超时
 

top命令

 Usage: top [SERVICE...]
 显示运行的进程.

unpause命令

 Usage: unpause [SERVICE...]
 取消暂停服务的暂停容器

up命令

 Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]
 选项:
 -d, --detach  在后台运行容器,打印新的容器名称
 --no-color   产生单色输出
 --quiet-pull  拉取时不打印进度信息
 --no-deps    不要启动与这个服务依赖的其他服务
 --force-recreate  即使配置也重新创建容器
 --always-recreate-deps  重新创建依赖容器
 --no-recreate   如果容器已存在,就不要创建.
 --no-build    即使丢失,也不要构建镜像.
 --no-start 创建后不要启动服务
 --build  在启动容器之前构建映像
 --abort-on-container-exit 如果有任何容器停止,则停止所有容器


 -t, --timeout TIMEOUT  对容器使用此超时(以秒为单位)

连接时或容器时关闭.


 -V, --renew-anon-volumes 重新创建存储卷,不检索之前容器的数据.

 --remove-orphans    删除未定义的服务的容器
 --exit-code-from SERVICE  返回所选服务的退出代码
 --scale SERVICE=NUM  将SERVICE扩展到NUM个实例
文章转载自运维开发圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论