目录
1. 概要
2. 常用的docker-compose命令
2.1、image
2.2、build
2.3、command
2.4、links
2.5、external_links
2.6、ports
1.7、expose
1.8、volumes
1.9、volumes_from
1.10、environment
1.11、networks
1. 概要
默认的模板文件是 docker-compose.yml
,其中定义的每个服务可以通过 image
指令指定镜像或 build
指令(需要 Dockerfile)来自动构建。
注意如果使用 build
指令,在 Dockerfile
中设置的选项(例如:CMD
, EXPOSE
, VOLUME
, ENV
等) 将会自动被获取,无需在 docker-compose.yml
中再次设置。如果设置了会被YML覆盖
2. 常用的docker-compose命令
命令 | 描述 |
---|---|
docker-compose up -d | 构建建启动容器 |
docker-compose exec bash | 登录到容器中 |
docker-compose down | 删除所有容器,镜像 |
docker-compose ps | 显示所有容器 |
docker-compose restart | 重新启动容器 |
docker-compose run --no-deps --rm php-fpm php -v | 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器 |
docker-compose build | 构建镜像 |
docker-compose build --no-cache | 不带缓存的构建 |
docker-compose logs | 查看的日志 |
docker-compose logs -f | 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息 |
docker-compose pause | 暂停容器 |
docker-compose unpause | 恢复容器 |
docker-compose rm | 删除容器(删除前必须关闭容器) |
docker-compose stop | 停止容器 |
docker-compose start | 启动容器 |
2.1、image
说明
指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose
将会尝试拉去这个镜像。
栗子
image: ubuntu image: mysql:5.7.22
2.2、build
说明
指定 Dockerfile
所在文件夹的路径。 Compose
将会利用它自动构建这个镜像,然后使用这个镜像。
栗子
build: ./ build: ./web/
2.3、command
说明
覆盖容器启动后默认执行的命令。
栗子
command:--default-authentication-plugin=mysql_native_password--character-set-server=utf8mb4--collation-server=utf8mb4_general_ci--explicit_defaults_for_timestamp=true--lower_case_table_names=1
2.4、links
说明
链接到其它服务中的容器。使用服务名称(同时作为别名)或服务名称:服务别名 (SERVICE:ALIAS)
格式都可以。
栗子
links:- mysql- db:database- redis
使用的别名将会自动在服务容器中的 /etc/hosts
里创建。例如:
172.17.2.111 db 172.17.2.112 database 172.17.2.113 redis
2.5、external_links
说明
链接到 docker-compose.yml 外部的容器,甚至 并非 Compose
管理的容器。参数格式跟 links
类似。
栗子
external_links:- redis- web_db_mysql:mysql- web_db_oracle:oracle- web_db_oracle:postgre
2.6、ports
说明
暴露端口信息。使用宿主:容器 (HOST:CONTAINER)
格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
栗子
ports:- "6379"- "8000:8000"- "46200:22"- "127.0.0.1:8080:8080"
注:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 你可能会得到错误得结果,因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。
1.7、expose
说明
暴露端口,但不映射到宿主机,只被连接的服务访问。可以指定内部端口为参数
栗子
expose:- "3307"- "6380"
1.8、volumes
说明
卷挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER
) 或加上访问模式 (HOST:CONTAINER:ro 或者rw
)。
volumes:- ./mysql/data:/var/lib/mysql - ./configs:/etc/configs/:ro
1.9、volumes_from
说明
从另一个服务或容器挂载它的所有卷。
栗子
volumes_from:- service_name- container_name
1.10、environment
说明
设置环境变量。只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。
栗子
environment:MYSQL_ROOT_PASSWORD: rootTZ: Asia/Shanghai
1.11、networks
说明
用于设置指定网络,子标签aliases用于设置服务别名,相同的别名可以在不同的网络中拥有不同的识别别名。
可以在service中使用,也可以在顶级标签中使用
栗子
services:some-service:networks:some-network:aliases:- alias1- alias3other-network:aliases:- alias2 # 定义网络 networks:default:external:name: app