docker-compose

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose相关的知识,希望对你有一定的参考价值。

一、什么是Docker compose?

Compose是一个用于定义、启动和管理多容器docker应用程序的工具。compose通过在YAML文件中定义服务和服务系统,并通过命令行docker-compose进行管理

Docker compose能做哪些事?

  • 构建Docker镜像
  • 启动容器化的应用及服务
  • 启动完整的服务系统
  • 管理系统中单个服务的状态
  • 服务伸缩
  • 查看生成服务的容器的收集日志

二、Docker-compose安装

详细安装参照:https://docs.docker.com/compose/install/

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.3/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

三、docker-compose常用选项与命令

3.1、命令格式

docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

Options:
-f, --file FILE :指明compose yml文件,默认文件名docker-compose.yml
-p, --project-name NAME:指定项目名称,默认使用当前所在目录为项目名
--verbose:更详细的输出信息
--log-level LEVEL:设定日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi:不打印ansi控制字符
-v, --version:查看版本
-H, --host HOST:连接守护进程套接字
Commands:
build:构建或重建服务
config:验证并查看compose文件
create :创建服务
down :停止并删除容器,网络,镜像和卷
events:从容器接收实时事件
exec :在正在运行的容器中执行命令
help :获取帮助信息
images :列出镜像
kill :关闭容器
logs:查看容器输出的日志
pause:暂停服务
port:打印公共端口以进行端口绑定
ps:列出容器
pull:拉取容器
push:上传容器
restart:重启服务
rm:删除停止的容器
run:运行一次性命令
scale:?规模设置服务容器的数量
start:启动服务
stop:停止服务
top :显示正在运行的进程
unpause:取消暂停的服务
up:创建并启动容器
version:查看Docker-Compose版本信息

3.2、build

构建(重新构建)项目中的服务容器,服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务
命令格式:build [options] [--build-arg key=val...] [SERVICE...]
Options:
--build-arg key=val:设置构建服务时的变量
--compress:使用gzip压缩构建上下文。
--force-rm:始终卸下中间容器
-m, --memory MEM:设置容器的内存限制
--no-cache:构建镜像时不使用缓存
--no-rm:构建成功后,不去除中间容器
--parallel:并行构建镜像
--progress string Set type of progress output (auto, plain, tty).
EXPERIMENTAL flag for native builder.
To enable, run with COMPOSE_DOCKER_CLI_BUILD=1)
--pull:始终尝试通过拉取操作来获取更新版本的镜像
-q, --quiet :不打印任何内容到标准输出

3.3、up

构建,重新创建,启动项目服务(docker-compose.yml)中的容器
命令格式:up [options] [--scale SERVICE=NUM...] [SERVICE...]
Options:
-d, --detach:后台运行容器
--no-color:单色输出
--quiet-pull:拉取镜像时不打印进度信息
--no-deps:不启动链接服务
--force-recreate:强制停止并重新创建容器
--always-recreate-deps:重新创建依赖的容器,与--no-recreate不能同时使用
--no-recreate:如果容器已存在,不重新创建,与--force-recreate和-V不能同时使用
--no-build:没有镜像,就不创建容器
--no-start:创建服务但不启动
--build:启动容器前生成镜像
--abort-on-container-exit:停止所有容器,与-d不能同时使用
--attach-dependencies:附加到依赖的容器
-t, --timeout TIMEOUT:超时时间,默认10秒
-V, --renew-anon-volumes:重新创建由docker管理的卷

3.4、down

停止容器并删除容器,网络,卷和镜像,不删除extra的网络和卷。
命令格式:down [options]
Options:
--rmi type:删除镜像,type必须是(all,local)之一,
‘all‘: 删除所有镜像
‘local‘: 只删除没有由‘image‘字段设置的自定义标签
-v, --volumes :删除卷
--remove-orphans:删除没有在 Compose file中定义的容器
-t, --timeout TIMEOUT:超时时间,默认10秒

四、docker-compose模板文件

Compose目前有三个版本分别为Version 1,Version 2,Version 3,Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1将来会被弃用。Compose模板文件是一个定义服务、网络和卷的YAML文件。Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。
Docker-Compose标准模板文件应该包含version、services、networks 三大部分,最关键的是services和networks两个部分。
详细的compose文件变量见: https://docs.docker.com/compose/compose-file/#variable-substitution

4.1、Docker-compose示例

Filename:docker-compose.yml
wordpress:
    image: wordpress:4.2.2
    links:
     - db: mysql
    ports:
     - 8080:80
db:
    image: mariadb
    environment:
        MYSQL_ROOT_PASSWORD: 123456

4.2、启动docker

systemctl start docker

4.3、运行docker-compose

docker-compose up

4.4、查看运行中的容器(需在docker-compose.yml所在目录)

docker-compose ps

以上是关于docker-compose的主要内容,如果未能解决你的问题,请参考以下文章

监听更改并在代码更改时重新加载容器 - docker-compose

Springboot 容器使用 docker-compose 连接到 mongo 容器的 503 错误代码

将 docker-compose 与 CI 结合使用 - 如何处理退出代码和守护程序链接容器?

docker-compose未显示对代码的任何更改

Docker Compose部署Nexus3时的docker-compose,yml代码

使用`docker-compose run`时无法调试,但`docker-compose up`有效