docker-compose
简介
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
docker-compse需要以下步骤
- 使用 Dockerfile 定义应用程序的环境(非必须)。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
docker-compose安装
- Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases。
- 通过pip安装, pip install docker-compose
docker-compose.yml
version: "2"
services:
web-nginx:
image: web-nginx:v2
build:
context: ./
dockerfile: Dockerfile
depends_on:
- redis
ports:
- "80:80"
networks:
- back-tier
redis:
image: redis
#links:
# 在web-nginx的container中的hosts中注册自己 例如:xxx.xxx.xxx.xx reids
#- web-nginx
networks:
- back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
注意事项
- links 与 depends_on 处理不好会形成环形依赖
- 同时有image 和 build的话,会优先使用image中的参数使用镜像,若没有则会更具build构建镜像,并使用image的名字命名镜像
docker-compose.yml参数说明
可参考 docker-compose.yml说明和编写 - 简书 (jianshu.com)
参数 | 说明 | 参考 |
---|---|---|
version | 使用的版本说明 | version: "2" |
services | 该参数下写服务名 | services: redis: image: redis |
image | 所使用的镜像 | image: web-nginx:v2 |
build | 构建镜像的Dockerfile文件路径 | build: ./dir |
depends_on | 解决容器的依赖、启动先后的问题 | depends_on: - db - redis |
container_name | 指定容器名称。默认将会使用项目名称_服务名称_序号 这样的格式 |
|
ports | 暴露端口信息,使用宿主端口:容器端口(HOST:CONTAINER) 格式,宿主将会随机选择端口)都可以。 |
ports: - "3000" - "80:8000" - "127.0.0.1:8001:8001" |
networks | 配置容器连接的网络 | networks: front-tier: driver: bridge back-tier: driver: bridge |
command | 覆盖容器启动后默认执行的命令 |
docker-compose.yml命令
docker-compose操作的是docker,使用docker-compose命令做的操作也能用docker命名替换
启动container
# 启动所有容器
docker-compose up -d
# 启动单个容器(该容器必须在service中已被定义)
docker-compose up -d redis
停止container
# 停止所有container
docker-compose stop
# 停止一个container(该容器必须在service中已被定义)
docker-compose stop worker
删除container
# 删除所有容器
docker-compose rm
# 删除单个容器
docker-compose rm redis
docker-compose参数详解
Usage:
docker-compose [-f <arg>...] [--profile <name>...] [options] [--] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file
(default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name
(default: directory name)
--profile NAME Specify a profile to enable
-c, --context NAME Specify a context name
--verbose Show more output
--log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--ansi (never|always|auto) Control when to print ANSI control characters
--no-ansi Do not print ANSI control characters (DEPRECATED)
-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
--project-directory PATH Specify an alternate working directory
(default: the path of the Compose file)
--compatibility If set, Compose will attempt to convert keys
in v3 files to their non-Swarm equivalent (DEPRECATED)
--env-file PATH Specify an alternate environment file
Commands:
build Build or rebuild services
config Validate and view the Compose file
create Create services
down Stop and remove resources
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 version information and quit
本文来自博客园,作者:糖烤栗子&,转载请注明原文链接:https://www.cnblogs.com/grocerystore/p/15382866.html