什么是Docker compose
Docker-Compose 是用来管理容器的,类似用户容器管家,我们有N多台容器或者应用需要启动的时候,如果手动去操作,是非常耗费时间的,如果有了 Docker-Compose 只需要一个配置文件就可以帮我们搞定,但是 Docker-Compose 只能管理当前主机上的 Docker,不能去管理其他服务器上的服务。意思就是单机环境。
使用docker compose的三个步骤为:
使用 Dockerfile 定义应用程序的环境。
使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
最后,执行 docker-compose up 命令来启动并运行整个应用程序。
用于移动应用程序的指令:
docker-compose up
#在后台执行
docker-compose up -d
yaml指令参考
version:
指定本 yml 依从的 compose 哪个版本制定的。
build:
指定为构建镜像上下文路径,即所用到的Dockerfile的位置
version: "3.7"
services:
webapp:
build: ./dir
也能有可选的 Dockerfile 和 args
version: "3.7"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
labels:
- "com.example.description=Accounting webapp"
- "com.example.department=Finance"
- "com.example.label-with-empty-value"
target: prod
context:上下文路径。
dockerfile:指定构建镜像的 Dockerfile 文件名。
args:添加构建参数,这是只能在构建过程中访问的环境变量。
labels:设置构建镜像的标签。
target:多层构建,可以指定构建哪一层。
cap_add,cap_drop:
添加或删除容器拥有的宿主机的内核功能。
cap_add:
- ALL # 开启全部权限
cap_drop:
- 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 完全启动 之后才启动。
version: "3.7"
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
dns_search:
自定义 DNS 搜索域。可以是单个值或列表。
dns_search: example
dns_search:
- dc1.example
- dc2.example
entrypoint:
覆盖容器默认的 entrypoint。
entrypoint:
- php
- -d
- zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
- -d
- memory_limit=-1
- vendor/bin/phpunit
env_file:
从文件添加环境变量。可以是单个值或列表的多个值。
env_file: .env
#也可以是列表格式
env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
environment:
添加环境变量。您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保 YML 解析器不会将其转换为 True 或 False。
environment:
RACK_ENV: development
SHOW: 'true'
expose:
暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数。
expose:
- "3000"
- "8000"
extra_hosts:
添加主机名映射。类似 docker client --add-host。
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
image:
指定容器运行的镜像。以下格式都可以:
image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry:4000/postgresql
image: a4bc65fd # 镜像id
更多推荐
Docker compose简单入门
发布评论