docker-compose属性
version: '3': 表示使用第三代语法来构建 docker-compose.yaml 文件。
services: 用来表示 compose 需要启动的服务。
image:指定启动容器的镜像,可以是镜像仓库/标签或者镜像id(或者id的前一部分)
container_name: 容器名称,指定一个自定义容器名,而不是默认生成的名称。
environment: 此节点下的信息会当作环境变量传入容器。
ports: 本地端口/容器端口,将容器中的端口映射到本地端口上。
restart: always 表示如果服务启动不成功会一直尝试。
volumes: 映射容器中的文件到本地,本地的也会映射到容器中。
depends_on:可以配置依赖服务,表示需要先启动 depends_on 下面的服务后,再启动本服务。
官网文档:https://docs.docker.com/compose/reference/build/
菜鸟文档:https://www.runoob.com/docker/docker-compose.html
build
用来构建指定路径的Dockerfile文件以及args参数
version: '2'
services:
webapp:
build:
context: ./dir #如果是.表示当前路径
dockerfile: Dockerfile-alternate #指定Dockerfile文件名。如果context指定了文件名,这里就不用本属性了
args:
buildno: 1
webapp服务将会通过./dir目录下的Dockerfile-alternate文件构建容器镜像。
如果你同时指定image和build,则compose会通过build指定的目录构建容器镜像,而构建的镜像名为image中指定的镜像名和标签。
image: webapp:tag
这将由./dir构建的名为webapp和标记为tag的镜像。
image
image指定启动容器的镜像,可以是镜像仓库/标签或者镜像id(或者id的前一部分)
image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
如果镜像不存在,Compose将尝试从官方镜像仓库将其pull下来,如果你还指定了build,在这种情况下,它将使用指定的build选项构建它,并使用image指定的名字和标记对其进行标记。
volumes
卷挂载路径设置,就是将容器中的文件映射到宿主机中,方便修改。
volumes:
# 只需指定一个路径,让引擎创建一个卷
- /var/lib/mysql
# 指定绝对路径映射
- /opt/data:/var/lib/mysql
# 相对于当前compose文件的相对路径
- ./cache:/tmp/cache
# 文件
- ./cache/abc.java:/tmp/cache/abc.java
# 用户家目录相对路径
- ~/configs:/etc/configs/:ro
# 命名卷
- datavolume:/var/lib/mysql
注:
一、不指定
(1)文件:宿主机修改该文件后容器里面看不到变化;容器里面修改该文件,宿主机也看不到变化
(2)文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步
二、ro
(1)文件:容器内不能修改,会提示read-only
(2)文件夹:容器内不能修改、新增、删除文件夹中的文件,会提示read-only
三、rw
(1)文件:不管是宿主机还是容器内修改,都会相互同步,但容器内不允许删除,会提示Device or resource busy;宿主机删除文件,容器内的不会被同步
(2)文件夹:不管是宿主机还是容器内修改、新增、删除文件,都会相互同步
links
链接到另一个服务中的容器。 请指定服务名称和链接别名(SERVICE:ALIAS),或者仅指定服务名称。
web:
links:
- db
- db:database
- redis
links也可以起到和depends_on相似的功能,即定义服务之间的依赖关系,从而确定服务启动的顺序。
external_links
链接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。参数格式跟 links 类似。
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
restart
# 默认的重启策略,在任何情况下都不会重启容器
restart: "no"
# 容器总是重新启动
restart: always
# 容器非正常退出时,退出状态非0才会重启
restart: on-failure
# 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器
restart: unless-stopped
network_mode
设置网络模式。
# 桥接模式
network_mode: "bridge"
# 本机模式
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
networks
配置容器连接的网络,引用顶级 networks 下的条目 。
services:
some-service:
networks:
some-network:
aliases:
- alias1
other-network:
aliases:
- alias2
networks:
some-network:
driver: custom-driver-1
注:aliases :同一网络上的其他容器可以使用服务名称或此别名来连接到对应容器的服务。
expose
暴露端口,但不映射到宿主机,只被连接的服务访问。 仅可以指定内部端口为参数
expose:
- "3000"
- "8000"
ports
暴露端口信息。 常用的简单格式:使用宿主机:容器(HOST:CONTAINER)。
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"
- "6060:6060/udp"
在v3.2中ports的长格式的语法允许配置不能用短格式表示的附加字段。 长格式:
ports:
- target: 80
published: 8080
protocol: tcp
mode: host
target:容器内的端口
published:物理主机的端口
protocol:端口协议(tcp或udp)
mode:host 和ingress 两总模式,host用于在每个节点上发布主机端口,ingress 用于被负载平衡的swarm模式端口。
pid
将PID模式设置为主机PID模式。 这就打开了容器与主机操作系统之间的共享PID地址空间。 使用此标志启动的容器将能够访问和操作裸机的命名空间中的其他容器,反之亦然。即打开该选项的容器可以相互通过进程 ID 来访问和操作。
pid: "host"
container_name
指定一个自定义容器名称,而不是生成的默认名称。
version: '3'
services:
node-exporter:
image: prom/node-exporter:latest
# 由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到多个容器。
container_name: node-exporter
restart: always
ports:
- "9100:9100"
environment
配置环境变量
version: '3'
services:
mysqld-exporter:
image: prom/mysqld-exporter
container_name: mysqld-exporter
restart: always
ports:
- "9104:9104"
environment:
- DATA_SOURCE_NAME="user:password@(hostname:3306)/"
启动
#直接启动
$ docker-compose up
# 若是要后台运行,加上-d
$ docker-compose up -d
# 若不使用默认的docker-compose.yml 文件名:
$ docker-compose -f server.yml up -d
常用命令
docker-compose ps:列出运行的容器
docker-compose logs:查看容器运行日志
docker-compose start:启动容器
docker-compose start mysql启动指定的已存在的容器
docker-compose stop:停止容器
docker-compose stop mysql停止指定的已存在的容器
docker-compose down:停止容器,并删除对应的资源
docker-compose rm:删除已停止的容器
docker-compose rm mysql删除指定已停止的容器
docker-compose build:构建或者重新构建服务
docker-compose up:构建并启动容器
编排顺序启动
https://blog.csdn.net/lu1171901273/article/details/121000686