赞
踩
docker-compose.yml包含version、services、networks3大部分
services的书写规则
1.iamge
- services:
- web: # 服务名称,用户自定义
- image: busybox # 镜像名称/镜像ID,如果本地不存在compose会拉取镜像
-
- # 以下格式都可
- images: redis
- images: mysql:latest
- images: example-registry.com:4000/postgresql
2.build-------基于Dockerfile,指定Dockerfile所在路径,Compose会利用它自动构建镜像,然后启动服务容器
- # 绝对路径
- build: /path/build
-
-
- # 相对路径
- build:./build
-
- # 设定上下文跟目录,以此目录指定Dockerfile
- build:
- context: ../
- dockerfile: path/Dockerfile
-
- # 给Dockerfile构建的镜像命名
- build: ./dir
- images: nginx:latest
-
- # 构建过程中指定环境变量,构建成功后取消
- build:
- context: .
- args:
- buildno: 1
- password: secret
-
- or
-
- build:
- context: .
- args:
- - buildno=1
- - password=secret
-
- ##与ENV不同,ARG允许空值
3.command-------覆盖容器启动后默认执行的命令
- command: bundle exec thin -p 3000
-
- or 写成dockerfile的格式
-
- command: [bundle, exec, thin, -p, 3000]
4.container_name-----容器名称
container_name: app
5.depends_on-------容器依赖
- # 基于redis和db服务启动web服务
- version: '2'
- services:
- web:
- build: .
- depends_on:
- - db
- - redis
- redis:
- image: redis
- db:
- image: postgres
6.dns --------
- dns: 8.8.8.8
-
- or
-
- dns:
- - 8.8.8.8
- - 9.9.9.9
-
- dns_search: example.com
- dns_search:
- - xxxx
- - xxxx
7. tmpfs--------挂在临时目录到容器内部,与run参数效果一致
- tmpfs: /run
- tmpfs:
- - /run
- - /tmp
8.entrypoint--------覆盖Dockerfile中ENTRYPOINTmingling
- entrypoint: /code/entrypoint.sh
-
- #
- entrypoint:
-
- - php
- - -d
9.env_file--------指定配置文件,设置compose的变量(可通过docker-compose -f FILE指定配置文件)
- env_file: .env
- # 若与environment指令冲突,以后者为准
-
- # 可设置多个
- env_file:
- - ./xx.env
- - xx.env
-
- # 此变量不对build构建过程生效
10.environment--------设置镜像变量,启动后的容器会包含这些变量设置
- environment:
- RACK_ENV: development
- SHOW: 'true'
- SESSION_SECRET:
-
- environment:
- - RACK_ENV=development
- - SHOW=true
- - SESSION_SECRE
11.external_links-------------让compose项目里面的容器链接到项目配置外部的容器(外部容器中必须至少有一个容器链接到项目内服务的同一个网络里)
- external_links:
- - redis_1
- - project_db_1:mysql
- - project_db_1:postgresql
12.exra_hosts-----------添加主机名标签(向/etc/hosts文件中添加纪录)
- extra_hosts:
- - "mysql:ip"
- - "nginx:ip"
-
-
- # 启动容器后查看内部hosts
- ip mysql
- ip nginx
13.links-----------链接到其它服务器中的容器
- links:
- - db
- - db:mysql
- - redis
- # 使用的别名会自动在容器的/etc/hosts里创建
- ip db
- ip mysql
- ip redis
14.logging--------配置日志服务
- logging:
- driver: syslog
- options:
- syslog-address: "tcp://ip"
-
- # 默认的dirver是json-file,可通过docker-compose logs显示日志
15.ports---------射端口(HOST:CONTAINER)
- ports:
- - "3000"
- - "8000:80"
- - "2222:22"
- - "127.0.0.1:8080:8080"
16.volumes-------挂载一个目录或者已经存在的数据卷容器(HOST:CONTAINER/HOST:CONTAINER:ro,后者设定数据卷只读,可保护宿主机器的文件系统)
- volumes:
- // 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
- - /var/lib/mysql
-
- // 使用绝对路径挂载数据卷
- - /opt/data:/var/lib/mysql
-
- // 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
- - ./cache:/tmp/cache
-
- // 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
- - ~/configs:/etc/configs/:ro
-
- // 已经存在的命名的数据卷。
- - datavolume:/var/lib/mysql
-
- # 从其他容器或者服务挂在数据卷
- volumes_from:
- - service_name
- - service_name: ro
- - container: container_name
- - container: container_name:rw
17.network_mode-------网络模式:
- network_mode: "bridge"
- network_mode: "host"
- network_mode: "none"
- network_mode: "service:[service name]"
- network_mode: "container:[container name/id]"
18.networks----------加入指定网络
- services:
- some-service:
- networks:
- - some-network
- - other-network
docker compose常用命令
docker-compose up -d # 在后台启动服务
docker-compose ps # 查看启动的服务
docker-compose stop #停止服务
- #查看帮助
- docker-compose -h
-
- # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
- docker-compose -f docker-compose.yml up -d
-
- #启动所有容器,-d 将会在后台启动并运行所有的容器
- docker-compose up -d
-
- #停用移除所有容器以及网络相关
- docker-compose down
-
- #查看服务容器的输出
- docker-compose logs
-
- #列出项目中目前的所有容器
- docker-compose ps
-
- #构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
- docker-compose build
-
- #拉取服务依赖的镜像
- docker-compose pull
-
- #重启项目中的服务
- docker-compose restart
-
- #删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
- docker-compose rm
-
- #在指定服务上执行一个命令。
- docker-compose run ubuntu ping docker.com
-
- #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
- docker-compose scale web=3 db=2
-
- #启动已经存在的服务容器。
- docker-compose start
-
- #停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
- docker-compose stop
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。