赞
踩
Docker
是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,降低了运维成本,但是在使用过程中也会发现一些弊端,如 Docker
命令参数太多太复杂、多容器管理繁琐等。Docker-compose
便是在这场景下诞生的一个用于定义和运行多容器 Docker 的应用程序工具,它可以轻松、高效的管理容器,本文将描述 Docker-compose
的 Yaml
配置和基础命令。
Docker-compose
运行原理:
通过解析解析 yaml
配置文件,解析容器信息,根据这些信息创建容器,并将 Docker-compose
的相关信息写入容器的 Labels
,通过 docker inspect
命令可以查看到 Labels
信息。
Docker-compose 是对 Docker 容器操作过程的封装,本身并不提供容器相关的功能
......
"Labels": {
"com.docker.compose.config-hash": "f95c990d0b17132fa84be888db2bd894d03fc0b0faccc2cd17cc2737af777f24",
"com.docker.compose.container-number": "1",
"com.docker.compose.depends_on": "",
"com.docker.compose.image": "sha256:dcf1bc695eac7bf2e9792bd3a06e2041a36aabbbe7b5314eb60f13e9a09afafa",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "app",
"com.docker.compose.project.config_files": "/root/app/docker-compose.yml",
"com.docker.compose.project.working_dir": "/root/app",
"com.docker.compose.service": "sdk",
"com.docker.compose.version": "2.2.2"
}
......
配置内容示例:
version: '3'
services:
# 服务名称,可以任意取值
rkproblem:
image: rkproblem:1.0.0
container_name: rkproblem
restart: always
network_mode: host
volumes:
- ./config/:/home/config/
- ./log/:/home/log/
ports:
- "8080:8080"
image
指定服务的镜像名称或镜像ID,如果镜像不存在将尝试远程拉取。
image: rkproblem:1.0.0
build
指定 Dockerfile
所在文件夹的路径,可以是相对路径或者绝对路径,基于 Dockerfile
在使用 up 启动时执行构建任务。
container_name
容器名称。
commond
覆盖容器启动后默认执行的命令。
command: ./startup.sh
ports
映射端口列表,可以添加多个端口的映射关系。
ports:
- "3000:3000"
- "8000:8000"
extra_hosts
主机名映射列表,会在 /etc/hosts
文件中添加一些记录。
extra_hosts:
- "rkproblem:127.0.0.1"
- "oauth:172.16.32.12"
volumes
挂载一个目录或者一个已存在的数据卷容器,可以使用 [HOST:CONTAINER]
或者[HOST:CONTAINER:ro]
格式,后者对于容器来说数据卷是只读的,可以有效保护宿主机的文件系统。
volumes:
- ./config/:/home/config/
- ./certs/:/home/certs/:ro
network_mode
网络模式
network_mode: "bridge"
network_mode: "none"
network_mode: "host"
dns
定义 DNS 服务器,可以是一个值也可以是一个列表。
dns:8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
Docker-compose
命令格式如下:
docker-compose [OPTIONS] [COMMAND] [ARGS...]
OPTIONS
参数如下:
-f --file FILE指定Compose模板文件,默认为docker-compose.yml
-p --project-name NAME 指定项目名称,默认使用当前所在目录为项目名
docker-compose up
为服务创建容器并启动,命令格式如下:
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
示例:
docker-compose up -d
参数选项:
-d 在后台运行服务容器
--no-color 不用颜色来区分不同服务的控制输出
--force-recreate 强制重新创建容器,不能与--no-recreate同时使用
–-no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
–-no-build 不自动构建缺失的服务镜像
-–build 在启动容器前构建服务镜像
-t, –-timeout TIMEOUT 停止容器时候的超时(默认为10秒)
docker-compose create
为服务创建容器,但是不启动。
docker-compose up [options] [SERVICE...]
示例:
docker-compose create
参数选项:
--force-recreate 强制重新创建容器,不能与--no-recreate同时使用
–-no-recreate 如果容器已经存在,则不重新创建,不能与–force-recreate同时使用
–-no-build 不自动构建缺失的服务镜像
-–build 在启动容器前构建服务镜像
docker-compose ps
查询服务的信息,命令格式如下
docker-compose ps [options] [SERVICE...]
示例:
# 查询sdk服务
docker-compose ps sdk
docker-compose stop
停止正在运行的容器,可以通过 docker-compose start
再次启动。
docker-compose stop [options] [SERVICE...]
示例:
# 停止sdk服务
docker-compose stop sdk
参数选项:
-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
docker-compose start
启动服务。
docker-compose start [SERVICE...]
示例:
# 启动sdk服务
docker-compose restart sdk
docker-compose restart
重启服务。
docker-compose restart [options] [SERVICE...]
示例:
# 重启sdk服务
docker-compose restart sdk
参数选项:
-t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)
docker-compose logs
查看服务容器的信息输出。
docker-compose logs [options] [SERVICE...]
示例:
# 打印sdk服务输出
docker-compose logs -f --tail 20 sdk
参数选项:
-f, --follow 跟踪服务输出
--no-color 不使用颜色区分不同服务的信息输出
--no-log-prefix 不显示服务名称的前缀
--since string 显示指定时间之后的日志(如 2013-01-02T13:23:37Z) 或者相对时间之后的日志(如 42m 表示42分钟之内)
-t, --timestamps 显示输出的时间戳
-until string 显示指定时间之前的日志(如 2013-01-02T13:23:37Z) 或者相对时间之前的日志(如 42m 表示42分钟之前)
docker-compose kill
发送 SIGKILL
信号强制停止服务容器。
docker-compose kill [options] [SERVICE...]
示例:
# 停止sdk服务
docker-compose kill sdk
参数选项:
-s, --signal string 指定发送的信号,如SIGNAL
docker-compose config
解析和验证 docker-compose
配置。
docker-compose config [options] [SERVICE...]
示例:
docker-compose config
参数选项:
--format string 以指定格式输出配置信息 [yaml | json] 默认 yaml
--hash string 打印指定服务的hash
--images 打印镜像名称,每行一个。
-q, --quiet 只验证配置,不打印输出
--services 打印服务名称,每行一个。
--volumes 打印卷名,每行一个。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。