容器编排docker-compose
docker-compose.yml文件是一个 YAML 文件,用于定义 Docker 容器在生产中的行为方式。
将 Compose 文件设置为 version:“3”。本质上,这会使其兼容 swarm mode。我们可以使用 docker stack deploy 命令(仅在 Compose 文件版本 3.x 及更高版本上受支持)运行此文件。您可以使用 docker-compose up 运行具有_非 swarm_ 配置的版本 3 文件。
技术栈
技术栈是一组相关的服务,它们共享依赖项并且可以一起进行编排和扩展。单个技术栈能够定义和协调整个应用的功能(虽然很复杂的应用程序可能需要使用多个技术栈)。
特点
1、单个主机上多个隔离环境
2、创建容器时保留数据卷
3、仅创建已经修改的容器
4、通过变量来定制环境变量
docker-compose中的一些指令
1、build
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
- buildno: 1
- password=secret
cache_from:
- alpine:latest
- corp/web_app:3.14
labels:
com.example.description: "Accounting webapp"
com.example.department: "Finance"
context:说明dockerfile的路径
dockerfile:备用dockerfile,还必须指定构建路径
args:添加的构建参数
cache_from:所列出的镜像将被引擎用来缓存
labels:使用Docker标签将元数据添加到生成的图像中。您可以使用数组或字典
2、cap_add、cap_drop
添加或删除容器功能
cap_add:
- ALL
cap_drop:
- NET_ADMIN
- SYS_ADMIN
3、command
覆盖默认command命令
command: bundle exec thin -p 3000
4、configs
在每个服务中使用configs为每个服务授予config权限,支持两种语法变体。
- SHORT SYNTAX
短语法变体仅指定配置名称。这将授予容器对配置的访问权限并将其挂载在容器的/<config_name>的目录下。源名称和目标安装点都设置为配置名称。
version: "3.3"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- my_config
- my_other_config
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
my_other_config被定义为外部资源,这意味着它已经在Docker中定义,可以通过运行docker config create命令或通过其他堆栈部署来定义。如果外部配置不存在,则堆栈部署将失败,并显示config not found错误
- LONG SYNTAX
长语法提供了在服务的任务容器中如何创建配置的更多粒度。
version: "3.3"
services:
redis:
image: redis:latest
deploy:
replicas: 1
configs:
- source: my_config
target: /redis_config
uid: '103'
gid: '103'
mode: 0440
configs:
my_config:
file: ./my_config.txt
my_other_config:
external: true
数字UID或GID,它将在服务的任务容器中拥有已安装