Compose 项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。python
Compose 默认模板(YAML格式)文件 docker-compose.yml git
Compose 中的两个概念:github
服务(service) :一个应用的容器,实际上能够包括若干运行相同镜像的容器实例。chrome
项目(project) :由一组关联的应用容器组成一个完整业务单元,在docker-compose.yml文件中定义。docker
Compose 的默认管理对象是项目,经过子命令对项目中的一组容器进行便捷地生命周期管理。缓存
Compose 项目由Python编写,实现了调用了Docker服务提供的API对容器进行管理。所以只要所操做的平台支持Docker API ,就能够在其上利用Compose来进行编排管理。服务器
# pip 安装 [root@localhost ~]# pip install -U docker-compose # 二进制包 官方定义好的二进制包,下载下来便可使用 [root@localhost ~]# curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose [root@localhost ~]# chmod +x /usr/local/bin/docker-compose # 查看命令路径 [root@localhost ~]# which docker-compose /usr/local/python3.5/bin/docker-compose # 查看版本信息 [root@localhost ~]# docker-compose version docker-compose version 1.16.1, build 6d1ac219 docker-py version: 2.5.1 CPython version: 3.5.2 OpenSSL version: OpenSSL 1.0.2k-fips 26 Jan 2017 # pip卸载 [root@localhost ~]# pip uninstall docker-compose # 二进制卸载 [root@localhost ~]# rm /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose Define and run multi-container applications with Docker. Usage: docker-compose [-f ...] [options] [COMMAND] [ARGS...] docker-compose -h|--help Options: # -f, --file FILE 指定使用的Compose模板文件,默认为docker-compose.yml -f, --file FILE Specify an alternate compose file (default: docker-compose.yml) # -p, --project-name NAME 指定项目名称,默认将使用所在目录名称做为项目名称。 -p, --project-name NAME Specify an alternate project name (default: directory name) --verbose Show more output --no-ansi Do not print ANSI control characters -v, --version Print version and exit -H, --host HOST Daemon socket to connect to --tls Use TLS; implied by --tlsverify --tlscacert CA_PATH Trust certs signed only by this CA --tlscert CLIENT_CERT_PATH Path to TLS certificate file --tlskey TLS_KEY_PATH Path to TLS key file --tlsverify Use TLS and verify the remote --skip-hostname-check Don't check the daemon's hostname against the name specified in the client certificate (for example if your docker host is an IP address) --project-directory PATH Specify an alternate working directory (default: the path of the Compose file) Commands: build Build or rebuild services bundle Generate a Docker bundle from the Compose file config Validate and view the Compose file create Create services down Stop and remove containers, networks, images, and volumes events Receive real time events from containers exec Execute a command in a running container help Get help on a command images List images kill Kill containers logs View output from containers pause Pause services port Print the public port for a port binding ps List containers pull Pull service images push Push service images restart Restart services rm Remove stopped containers run Run a one-off command scale Set number of containers for a service start Start services stop Stop services top Display the running processes unpause Unpause services up Create and start containers version Show the Docker-Compose version information
build并发
# build [root@localhost ~]# docker-compose build --help Build or rebuild services. Services are built once and then tagged as `project_service`, e.g. `composetest_db`. If you change a service's `Dockerfile` or the contents of its build directory, you can run `docker-compose build` to rebuild it. Usage: build [options] [--build-arg key=val...] [SERVICE...] Options: --force-rm Always remove intermediate containers. # --force-rm 删除构建过程当中的临时容器。 --no-cache Do not use cache when building the image. # --no-cache 构建镜像过程当中不适用缓存(这将加长构建过程)。 --pull Always attempt to pull a newer version of the image. # --pull 始终尝试经过拉取操做来获取更新版本的镜像。 --build-arg key=val Set build-time variables for one service. # --build-arg key=val 设置变量(Dockerfile 中定义的ARG变量) # AGR 变量不像ENV变量始终存在镜像中。不过ARG变量会以相似的方式对构建缓存产生影响。 # 若是Dockerfile中定义的ARG变量的值与以前定义的变量值不同,那么就有可能产生"cache miss"。 # 好比RUN指令使用ARG定义的变量时,ARG变量的值变了以后,就会致使缓存失效。
killapp
# kill [root@localhost ~]# docker-compose kill --help Force stop service containers. Usage: kill [options] [SERVICE...] Options: -s SIGNAL SIGNAL to send to the container. Default signal is SIGKILL. # 经过发送SIGKILL 信号强制中止服务容器。 # 支持经过-s 参数来指定发送的信号, # 例如: docker-compose -f /opt/compose-conf/jenkins/jenkins.yml kill -s SIGINT
logscurl
# logs 查看服务器的输出 # 默认状况下将对不一样的服务输出使用不一样颜色来区分 # 可以使用 --no-color 关闭颜色输出 [root@localhost ~]# docker-compose logs --help View output from containers. Usage: logs [options] [SERVICE...] Options: --no-color Produce monochrome output. # --no-color 关闭颜色输出 -f, --follow Follow log output. # -f 按照日志格式输出 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml logs -f -t, --timestamps Show timestamps. # -t timestamps时间格式输出 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml logs -ft --tail="all" Number of lines to show from the end of the logs for each container. # 查看日志末尾显示行数 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml logs -ft --tail=10
ps
# ps 列出项目中全部容器 # -q 返回容器的ID # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml ps -q
config
# config # 显示配置文件信息 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml config # --services 显示服务名称 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml config --services # --volumes 显示挂载信息 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml config --volumes
pull
# pull 拉取服务依赖的镜像 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml pull # --ignore-pull-failures 忽略拉取镜像过程当中的错误 # --parallel 并发拉取多个镜像 # --quiet 不显示进度信息 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml pull --ignore-pull-failures --parallel
restart
# restart 重启项目中的服务 # -t, --timeout TIMEOUT 指定重启前中止容器的超时(默认10s)
rm
# rm 删除全部中止状态的服务容器。 # -f, --force 强制删除,包括非中止的容器。 # -s, --stop 先中止容器,而后删除 # -v 删除容器所挂载的数据卷 # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml rm -sf
run
# run 在指定服务上执行一个命令 # docker-compose -f /opt/compose-conf/jenkins/jenkins.yml run jenkins ping www.baidu.com # 默认状况下,若是存在关联,则全部关联的服务将会自动被启动,除非这些服务已经在运行中。 # 该命令相似于启动容器后运行指定的命令,相关卷、连接等都将会按照配置自动建立。 # 给定命令将会覆盖原有的自动运行命令。 # 不会自动建立端口,以免冲突 # --no-deps 不自动启动关联的容器 # -d 在后台运行服务容器。 # --name NAME 为容器指定一个名字。 # --entrypoint CMD 覆盖默认的容器启动指令。 # -e KEY=VAL 设置环境变量值,可屡次使用选项来设置多个环境变量。 # -u, --user="" 指定运行容器的用户或者 uid。 # --rm 运行命令后自动删除容器,d 模式下将忽略 # -p, --publish=[] 映射容器端口到本地主机 # --service-ports 配置服务端口并映射到本地主机 # -T 不分配伪tty,意味着依赖tty的指令将没法运行 # -v, --volume=[] 挂载卷,默认[]
scale
# scale 设置指定服务运行的容器个数 docker-compose -f /opt/compose-conf/jenkins/jenkins.yml scale jenkins=5 # 通常状况下,当指定数目多于改服务器低昂去实际运行容器,将新建立并启动容器;反之,将中止容器。 # -t , --timeout TIMEOUT 中止容器时候的超时(默认10s)
start
# start # 启动已经存在的服务容器。 # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml start
stop
# stop 中止已处于运行状态的容器,不删除。能够经过docker-compose start 再次启动 # -t , --timeout TIMEOUT 中止容器时候的超时(默认10s) # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml stop # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml start
pause , unpause
# pause 暂停一个服务容器 # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml pause # unpause 恢复处于暂停状态的服务 # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml unpause
up
# up # 尝试自动完成包括构建镜像,从新建立服务,启动服务,并关联服务相关容器的一系列操做。 # 连接的服务将会被自动启动,除非已经处于运行状态。 # -d 在后台运行服务容器。 # --no-color 不使用颜色来区分不一样的服务的控制台输出。 # --no-deps 不启动服务所连接的容器 # --force-recreate 强制从新建立容器,不能与--no-recreate 同时使用。 # --no-recreate 若是容器已经存在,则不从新建立,不能与--force-recreate 同时使用。 # --no-build 不自动构建缺失的服务镜像。 # --abort-on-container-exit 若是任何容器中止,则中止全部容器,不能与-d 同时使用。 # -t, --timeout TIMEOU 中止容器时候的超时(默认10s) # --remove-orphans 移除服务容器,不改变文件中的定义 # --exit-code-from SERVICE 返回所选服务容器的退出码 # --scale SERVICE=NUM 将SERVICE 放到num个实例。覆盖scale 在文件中设置 # [root@localhost ~]# docker-compose -f /opt/compose-conf/jenkins/jenkins.yml up -d