# docker-compose
# 安装
install Docker Compose (opens new window)
# 简介
用于容器编排,负责快速的部署分布式应用。
# 术语
服务(service): 一个应用容器,实际上可以运行多个相同镜像的实例。
项目(project): 由一组关联的应用容器组成的一个完整业务单元。Compose对它进行管理。
# 基本操作
# 常用命令选项
-f --file FILE
指令Compose模板文件,默认为docker-compose.yml
-p --project-name NAME
指定项目名称,默认使用所在目录名称作为项目名
# 命令
重新构建容器
- --force-rm 删除构建过程中的临时容器。
- --no-cache 构建镜像过程中不使用 cache(这将加长构建过程)。
- --pull 始终尝试通过 pull 来获取更新版本的镜像。
$ docker-compose build
配置校验
$ docker-compose config
进入容器
$ docker-compose exec
查看日志
$ docker-compose logs [options] [service]
打印某个容器端口所映射的公共端口
$ docker-compose port [options] SERVICE PRIVATE_PORT
拉取服务依赖的镜像
$ docker-compose pull [option] [service]
删除所有(停止状态的)服务容器
- -f, --force 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
- -v 删除容器所挂载的数据卷。
$ docker-compose rm [option] [service]
列出Compose文件中包含的镜像
$ docker-compose images
列出项目中目前的所有容器
$ docker-compose ps [options] [service]
查看各个服务容器内运行的进程
$ docker-compose top
构建镜像,创建服务,启动服务,关联服务相关容器
- -d 在后台运行服务容器。
- --no-deps 不启动服务所链接的容器。
- --force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。
- --no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
- --no-build 不自动构建缺失的服务镜像。
- -t, --timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。
$ docker-compose up [option] [service]
在服务容器里执行指令
$ docker-compose run [service] echo 'hello'
启动已存在的服务容器
$ docker-compose start [service]
停止运行中的服务容器
-t --timeout TIMEOUT
停止容器时候的超时(默认10秒)
$ docker-compose stop [option] [service]
暂停服务容器
$ docker-compose pause [service]
恢复暂停的服务容器
$ docker-compose unpause [service]
停止up命令启动的容器
$ docker-compose down
强制停止服务容器
$ docker-compose kill [service]
重启服务
- -t, --timeout TIMEOUT 指定重启前停止容器的超时(默认为 10 秒)。
$ docker-compose restart [options] [service]
# 模板文件
dcoker-compose.yml
version: "3"
services:
app:
build: ./ # 指定Dockerfile或docker-compose.yml文件的路径,同context
dockerfile: Dockerfile # 指定Dockerfile文件名
args: # 指定构建镜像时的变量
env: dev
cache_form: # 指定构建镜像的缓存
- node:lastest
image: josh:t1 # 指定镜像名称
container_name: app-$version # 指定容器名称,默认为:项目名称_服务名称_序号
labels:
release: "rc for 1.0"
ports:
- "100:200"
volumes:
- "/data"
command: echo "hello yml" # 覆盖容器启动后默认执行的命令
depends_on: # 等待db容器启动完成后执行
- db
dns: # 指定dns服务器
- 8.8.8.8
- 114.114.114.114
tmpfs: # 挂载文件系统到容器
- /data
env_file: # 基于yml模板文件路径,指定环境变量文件,环境变量文件如下
- ./common.env
environment: # 环境变量
- NODE_ENV=development
expose: # 服务暴露端口
- "3000"
extra_hosts: # 指定host名称映射
- "wangzhenxi.com:8.8.8.8"
环境变量文件env_file
NODE_ENV=development
← docker Google SEO →