services的书写规则
1.iamge
services:
web: # 服务名称,⽤户⾃定义
image: busybox # 镜像名称/镜像ID,如果本地不存在compose会拉取镜像
# 以下格式都可
images: redis
images: mysql:latest
images: example-registry: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允许空值
3mand-------覆盖容器启动后默认执⾏的命令
command: bundle exec thin -p 3000
or写成dockerfile的格式
command: [bundle, exec, thin, -p, 3000]
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
dns_search:
- xxxx
- xxxx
7. tmpfs--------挂在临时⽬录到容器内部,与run参数效果⼀致
tmpfs: /run
tmpfs:
- /run
- /tmp
entrypoint: /code/entrypoint.sh
#
entrypoint:
- php
- -d
env_file: .env
# 若与environment指令冲突,以后者为准
# 可设置多个
env_file:
- ./xx.env
- xx.env
# 此变量不对build构建过程⽣效
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRE
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
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
17work_mode-------⽹络模式:
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
18works----------加⼊指定⽹络
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 模板⽂件,默认为 l,可以多次指定。
docker-compose -l up -d
#启动所有容器,-d 将会在后台启动并运⾏所有的容器
docker-compose up -d
#停⽤移除所有容器以及⽹络相关
docker-compose down
docker重启容器命令
#查看服务容器的输出
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
#设置指定服务运⾏的容器个数。通过 service=num 的参数来设置数量
docker-compose scale web=3 db=2
#启动已经存在的服务容器。
docker-compose start
#停⽌已经处于运⾏状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
docker-compose stop
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论