Lazy loaded image
好用的Docker Compse
字数 1687阅读时长 5 分钟
2024-8-16
2024-8-17
type
Post
status
Published
date
Aug 16, 2024
slug
summary
这个好用
tags
实用教程
软件
Docker
category
技术分享
icon
password

Docker Compose

Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
如果你还不了解 YML 文件配置,可以先阅读 YAML 入门教程。

Compose 使用的三个步骤:

使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
docker-compose.yml 的配置案例如下(配置参数参考下文):
实例

yaml 配置实例

 

Compose 安装

Linux 上我们可以从 Github 上下载它的二进制包来使用,最新发行的版本地址:https://github.com/docker/compose/releases
运行以下命令以下载 Docker Compose 的当前稳定版本:
 
要安装其他版本的 Compose,请替换 v2.2.2。
Docker Compose 存放在 GitHub,不太稳定。
你可以也通过执行下面的命令,高速安装 Docker Compose。
 
将可执行权限应用于二进制文件:
 
创建软链:
 
测试是否安装成功:
 
Docker-compose version 1.24.1, build 4667896b
注意: 对于 alpine,需要以下依赖包: py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和 make。

创建 docker-compose.yml

在测试目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:
docker-compose.yml 配置文件

yaml 配置

 
该 Compose 文件定义了两个服务:web 和 redis。
web:该 web 服务使用从 Dockerfile 当前目录中构建的镜像。然后,它将容器和主机绑定到暴露的端口 5000。此示例服务使用 Flask Web 服务器的默认端口 5000 。
redis:该 redis 服务使用 Docker Hub 的公共 Redis 映像。

使用 Compose 命令构建和运行您的应用

在测试目录中,执行以下命令来启动应用程序:
 
如果你想在后台执行该服务可以加上 -d 参数:
 

yml 配置指令参考

 
version
指定本 yml 依从的 compose 哪个版本制定的。
 
build
指定为构建镜像上下文路径:
 
例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile 所构建的镜像:
 
或者,作为具有在上下文指定的路径的对象,以及可选的 Dockerfile 和 args:
 
context:上下文路径。
dockerfile:指定构建镜像的 Dockerfile 文件名。
args:添加构建参数,这是只能在构建过程中访问的环境变量。
labels:设置构建镜像的标签。
target:多层构建,可以指定构建哪一层。
cap_add,cap_drop
添加或删除容器拥有的宿主机的内核功能。
  • ALL # 开启全部权限
 
  • SYS_PTRACE # 关闭 ptrace权限
 
cgroup_parent
为容器指定父 cgroup 组,意味着将继承该组的资源限制。
 
cgroup_parent: m-executor-abcd
command
覆盖容器启动的默认命令。
 
command: ["bundle", "exec", "thin", "-p", "3000"]
container_name
指定自定义容器名称,而不是生成的默认名称。
container_name: my-web-container
 
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 之前停止。
注意:web 服务不会等待 redis db 完全启动 之后才启动。

devices

指定设备映射列表。

dns

自定义 DNS 服务器,可以是单个值或列表的多个值。

env_file

从文件添加环境变量。可以是单个值或列表的多个值。
 
也可以是列表格式:

environment

添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False。
environment:
RACK_ENV: development
SHOW: 'true'

expose

暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数:
 

extra_hosts

添加主机名映射。类似 docker client --add-host。
 
以上会在此服务的内部容器中 /etc/hosts 创建一个具有 ip 地址和主机名的映射关系:
 

Docker 文件挂载与端口映射

以mysql为例,如果直接运行,可以输入一下命令:
 
以下是命令详解:
 
但是我们现在是使用docker compose来使用的话,我们需要编辑一个以docker-compose.yml命名的文件,编辑一下内容:
 
编辑之后,保存好,然后输入命令
运行Mysql的容器。(-d的意思就是后台运行)
上一篇
利用Docker Compose 运行ONLY OFFICE社区服务器和文件服务器
下一篇
Docker好用的操作界面Portainer

评论
Loading...