Docker-Compose
容器编排:
让容器按照所设定好的依赖关系先后启动.
Compose 简介
使用 Compose 基本上是一个三步过程:
- 使用 定义您的应用程序的环境,
Dockerfile
以便它可以在任何地方复制。 - 定义组成您的应用程序的服务,
docker-compose.yml
以便它们可以在隔离的环境中一起运行。 - 运行
docker compose up
和Docker compose command启动并运行你的整个应用程序。您也可以docker-compose up
使用 docker-compose 二进制文件运行。
一个docker-compose.yml
看起来像这样:
version: "3.9" # optional since v1.27.0
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
安装 Compose
在 Linux 上,您可以从GitHub 上的Compose 存储库发布页面下载 Docker Compose 二进制文件 。按照链接中的说明进行操作,其中包括curl
在终端中运行命令以下载二进制文件。这些分步说明也包含在下面。
- 运行此命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-(uname -s)-(uname -m)" -o /usr/local/bin/docker-compose
# uname -s 获取当前系统版本
# uname -m 获取当前系统架构
root@Rtwork:~# uname -s
Linux
root@Rtwork:~# uname -m
x86_64
- 对二进制文件应用可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
- curl使用代理
curl --proxy http://192.168.168.254:1282 -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-(uname -s)-(uname -m)" -o /usr/local/bin/docker-compose
Compose命令补全
Compose命令补全在Bash和Zsh下的安装方式不同,CentOS 7默认使用Bash,其他Shell以及其他系统上的安装,请查看Docker的官方文档:https://docs.docker.com/compose/completion/
curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
这样,在重新登录后,输入docker-compose
命令后,按下TAB键盘,效果如下:
[root@localhost ~]# docker-compose
build config down exec kill pause ps push rm scale stop up bundle create events help logs port pull restart run start unpause version
Compose 文件编写
build
build
可以指定为包含构建上下文路径的字符串:
version: "3.9"
services:
webapp:
build: ./dir
或者,作为具有在上下文中指定的路径以及可选的Dockerfile和args 的对象:
version: "3.9"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
如果您指定image
as build
,则 Compose 使用 中指定的webapp
和 可选命名构建的图像:tag``image
build: ./dir
image: webapp:tag
depends_on
表示服务之间的依赖关系。服务依赖会导致以下行为:
docker-compose up
按依赖顺序启动服务。在下面的例子中,db
和redis
在 之前启动web
。docker-compose up SERVICE
自动包含SERVICE
的依赖项。在下面的示例中,docker-compose up web
还创建并启动db
和redis
。docker-compose stop
按依赖顺序停止服务。在以下示例中,web
在db
和之前停止redis
。
简单的例子:
version: "3.9"
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
image
指定启动容器的镜像。可以是存储库/标签或部分图像 ID。
image: redis
image: ubuntu:18.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
如果映像不存在,Compose 会尝试拉取它,除非您还指定了build,在这种情况下,它会使用指定的选项构建它并使用指定的标签对其进行标记。
expose
公开端口而不将它们发布到主机——它们只能被链接的服务访问。只能指定内部端口。
expose:
- "3000"
- "8000"
ports
共有三个选项:
- 指定两个端口 (
HOST:CONTAINER
) - 仅指定容器端口(为主机端口选择了一个临时主机端口)。
- 指定要绑定到 AND 两个端口的主机 IP 地址(默认为 0.0.0.0,表示所有接口):(
IPADDR:HOSTPORT:CONTAINERPORT
)。如果 HOSTPORT 为空(例如127.0.0.1::80
),则会选择一个临时端口来绑定到主机上。
以HOST:CONTAINER
格式映射端口时,使用低于 60 的容器端口时可能会遇到错误结果,因为 YAML 将格式xx:yy
中的数字解析为 base-60 值。因此,我们建议始终将您的端口映射明确指定为字符串。
ports:
- "3000"
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "49100:22"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
- "127.0.0.1::5000"
- "6060:6060/udp"
- "12400-12500:1240"
networks
要加入的网络,引用[top-level networks
key]下的条目 。
services:
some-service:
networks:
- some-network
- other-network
文章目录
评论抢沙发