Docker - Docker Compose
Docker Compose简介
- https://docs.docker.com/compose/
- https://docs.docker.com/reference/compose-file/
- https://github.com/docker/compose
Docker 提供的一个命令行工具,用来定义和运行由多个容器组成的应用,可以轻松、高效的统一管理多个容器。
使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。
然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
Compose 允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project),并由单个命令完成应用的创建和启动。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。
因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
两个概念
- 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义,通过子命令对项目中的一组容器进行便捷地生命周期管理。
可见,一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,也就是说Compose 的默认管理对象是项目。
三个步骤
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行
docker-compose up
命令来启动并运行整个应用程序。
独立安装与插件安装
官方文档中linux系统下Compose安装方式分为独立安装和插件安装
插件安装
- https://docs.docker.com/compose/install/linux/
- 插件安装的Compose,V2版本指令是
docker compose
(中间是空格) - 最新版的docker安装时会自动以插件的形式安装compose
独立安装
- https://docs.docker.com/compose/install/standalone/
- 独立安装的compose,无论V1和V2版本的指令都是
docker-compose
(中间是短横线)
同时安装和使用
- 可以同时采用两种方式安装,安装后可以同时使用
docker-compose
和docker compose
在Linux系统下独立安装 docker-compose V1
# 下载docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 授权
$ sudo chmod +x /usr/local/bin/docker-compose
# 版本信息显示正常说明安装成功
$ docker-compose --version
在Linux系统下独立安装 Docker Compose V2
- https://docs.docker.com/compose/install/standalone/
- 独立安装的 compose 指令都是
docker-compose
(中间是短横线)
[root@node200 ~]# curl -SL https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 60.2M 100 60.2M 0 0 7757k 0 0:00:07 0:00:07 --:--:-- 10.0M
[root@node200 ~]#
[root@node200 ~]# chmod +x /usr/local/bin/docker-compose
[root@node200 ~]#
[root@node200 ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
[root@node200 ~]#
[root@node200 ~]# ll /usr/local/bin/docker-compose
-rwxr-xr-x 1 root root 63173250 Sep 6 13:59 /usr/local/bin/docker-compose
[root@node200 ~]#
[root@node200 ~]# ll /usr/local/bin/docker-compose
-rwxr-xr-x 1 root root 63173250 Sep 6 13:59 /usr/local/bin/docker-compose
[root@node200 ~]#
[root@node200 ~]# docker-compose -v
Docker Compose version v2.29.2
[root@node200 ~]#
命令说明
- https://yeasy.gitbook.io/docker_practice/compose/commands
- https://github.com/yeasy/docker_practice/blob/master/compose/commands.md
[root@anliven ~]# docker-compose --version
docker-compose version 1.26.0, build d4451659
[root@anliven ~]#
[root@anliven ~]# docker-compose --help
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [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)
-c, --context NAME Specify a context name
--verbose Show more output
--log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--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
--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
--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 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
[root@anliven ~]#
参考消息
- https://docs.docker.com/reference/compose-file/
- https://www.runoob.com/docker/docker-compose.html
- https://github.com/docker/awesome-compose
- docker-compose模板文件 https://github.com/yeasy/docker_practice/blob/master/compose/compose_file.md
行动是绝望的解药!
欢迎转载和引用,但请在明显处保留原文链接和原作者信息!
本博客内容多为个人工作与学习的记录,少数内容来自于网络并略有修改,已尽力标明原文链接和转载说明。如有冒犯,即刻删除!
以所舍,求所得,有所获,方所成。