文章目录
- docker-compose介绍
- 安装
- 安装docker
- 安装docker-compose
- 查看版本
- docker-compose文件
- 常用服务配置
- build
- image
- container_name
- volumes
- command
- links
- expose
- ports
- restart
- environment
- 教程
docker-compose介绍
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。这里使用pip3来安装docker-compose
安装
安装docker
安装docker-compose
pip3 install docker-compose
查看版本
sudo docker-compose -version
docker-compose文件
docker-compose.yml
version: '3'
services:
linux01:
build: ./
image: chenchongbiao/myubuntu:v1
working_dir: /usr/local/bash
container_name: linux01
hostname: linux01
volumes:
- ./linux01/bash:/usr/local/bash
ports:
- "8022:22"
restart: always
常用服务配置
build
build 可以指定包含构建上下文的路径:
version: '3'
services:
webapp:
build: ./
build指明Dockerfile文件的路径
image
指定启动容器的镜像,可以是镜像仓库/标签或者镜像id(或者id的前一部分)
image: redis
image: ubuntu:20.04
image: bluesky/ubuntu
image: example-registry.com:4000/postgresql
image: a4bc65fd
如果镜像不存在,Compose将尝试从官方镜像仓库将其pull下来,如果你还指定了build,在这种情况下,它将使用指定的build选项构建它,并使用image指定的名字和标记对其进行标记。
container_name
指定一个自定义容器名称,而不是生成的默认名称。
container_name: my-container
由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到多个容器。
volumes
卷挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro),挂载数据卷的默认权限是读写(rw),可以通过ro指定为只读。
你可以在主机上挂载相对路径,该路径将相对于当前正在使用的Compose配置文件的目录进行扩展。 相对路径应始终以 . 或者 … 开始。
volumes:
# 只需指定一个路径,让引擎创建一个卷
- /var/lib/mysql
# 指定绝对路径映射
- /opt/data:/var/lib/mysql
# 相对于当前compose文件的相对路径
- ./cache:/tmp/cache
# 用户家目录相对路径
- ~/configs:/etc/configs/:ro
# 命名卷
- datavolume:/var/lib/mysql
command
覆盖容器启动后默认执行的命令。
command: /usr/sbin/sshd -D
该命令也可以是一个类似于dockerfile的列表:
command: ["/usr/sbin/sshd","-D"]
links
链接到另一个服务中的容器。 请指定服务名称和链接别名(SERVICE:ALIAS),或者仅指定服务名称。
linux01:
links:
- linux02
- redis
链接不需要启用服务进行通信 - 默认情况下,任何服务都可以以该服务的名称到达任何其他服务。
links也可以起到和depends_on相似的功能,即定义服务之间的依赖关系,从而确定服务启动的顺序。
expose
暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数
expose:
- "3000"
- "8000"
ports
暴露端口信息。
常用的简单格式:使用宿主:容器 (HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
ports:
- "3000"
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "8022:22"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
- "6060:6060/udp"
restart
no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则on-failure将重新启动容器。
unless-stopped如果容器正常stopped,然后机器重启或docker服务重启,这种情况下容器将不会被restart
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
environment
添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。
只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
如果服务指定了build选项,那么在构建过程中通过environment定义的环境变量将不会起作用。 将使用build的args子选项来定义构建时的环境变量。
教程
菜鸟教程docker-compose【狂神说Java】Docker进阶篇超详细版教程通俗易懂