logo
当前位置:首 页 > 编程技术 >后端开发 >docker > 查看文章

docker-compose.yml的使用

docker, 后端开发, 编程技术 你是第2617个围观者 0条评论 供稿者: 标签:,

docker-compose.yml包含version、services、networks3大部分

 

services的书写规则

1.iamge

  1. services:
  2. web:             # 服务名称,用户自定义
  3. image: busybox         # 镜像名称/镜像ID,如果本地不存在compose会拉取镜像  
  4. # 以下格式都可   
  5. images: redis  
  6. images: mysql:latest   
  7. images: example-registry.com:4000/postgresql

 

2.build——-基于Dockerfile,指定Dockerfile所在路径,Compose会利用它自动构建镜像,然后启动服务容器

 

  1. # 绝对路径
  2. build: /path/build
  3.  
  4.  
  5. # 相对路径
  6. build:./build
  7.  
  8. # 设定上下文跟目录,以此目录指定Dockerfile
  9. build:
  10. context: ../
  11. dockerfile: path/Dockerfile
  12.  
  13. # 给Dockerfile构建的镜像命名
  14. build: ./dir
  15. images: nginx:latest
  16.  
  17. # 构建过程中指定环境变量,构建成功后取消
  18. build:
  19. context: .
  20. args:
  21. buildno: 1
  22. password: secret
  23.  
  24. or
  25.  
  26. build:
  27. context: .
  28. args:
  29. - buildno=1
  30. - password=secret
  31.  
  32. ##与ENV不同,ARG允许空值

 

 

3.command——-覆盖容器启动后默认执行的命令

 

  1. command: bundle exec thin -p 3000
  2.  
  3. or 写成dockerfile的格式
  4.  
  5. command: [bundle, exec, thin, -p, 3000]

 

 

4.container_name—–容器名称

  1. container_name: app

 

5.depends_on——-容器依赖

  1. # 基于redis和db服务启动web服务
  2. version: '2'
  3. services:
  4. web:
  5. build: .
  6. depends_on:
  7. - db
  8. - redis
  9. redis:
  10. image: redis
  11. db:
  12. image: postgres

 

 

6.dns ——–

 

  1. dns: 8.8.8.8
  2.  
  3. or
  4.  
  5. dns:
  6. - 8.8.8.8
  7. - 9.9.9.9
  8.  
  9. dns_search: example.com
  10. dns_search:
  11. - xxxx
  12. - xxxx

 

 

7. tmpfs——–挂在临时目录到容器内部,与run参数效果一致

 

  1. tmpfs: /run
  2. tmpfs:
  3. - /run
  4. - /tmp

 

 

8.entrypoint——–覆盖Dockerfile中ENTRYPOINTmingling

  1. entrypoint: /code/entrypoint.sh
  2.  
  3. #
  4. entrypoint:
  5. - php
  6. - -d

9.env_file——–指定配置文件,设置compose的变量(可通过docker-compose -f FILE指定配置文件)

  1. env_file: .env
  2. # 若与environment指令冲突,以后者为准
  3.  
  4. # 可设置多个
  5. env_file:
  6. - ./xx.env
  7. - xx.env
  8.  
  9. # 此变量不对build构建过程生效

10.environment——–设置镜像变量,启动后的容器会包含这些变量设置

  1. environment:
  2. RACK_ENV: development
  3. SHOW: 'true'
  4. SESSION_SECRET:
  5.  
  6. environment:
  7. - RACK_ENV=development
  8. - SHOW=true
  9. - SESSION_SECRE

11.external_links————-让compose项目里面的容器链接到项目配置外部的容器(外部容器中必须至少有一个容器链接到项目内服务的同一个网络里)
  1. external_links:
  2. - redis_1
  3. - project_db_1:mysql
  4. - project_db_1:postgresql

12.exra_hosts———–添加主机名标签(向/etc/hosts文件中添加纪录)

  1. extra_hosts:
  2. - "mysql:ip"
  3. - "nginx:ip"
  4.  
  5.  
  6. # 启动容器后查看内部hosts
  7. ip mysql
  8. ip nginx

13.links———–链接到其它服务器中的容器

  1. links:
  2. - db
  3. - db:mysql
  4. - redis
  5. # 使用的别名会自动在容器的/etc/hosts里创建
  6. ip db
  7. ip redis

14.logging——–配置日志服务
  1. logging:
  2. driver: syslog
  3. options:
  4. syslog-address: "tcp://ip"
  5.  
  6. # 默认的dirver是json-file,可通过docker-compose logs显示日志

15.ports———映射端口(HOST:CONTAINER)
  1. ports:
  2. - "3000"
  3. - "8000:80"
  4. - "2222:22"
  5. - "127.0.0.1:8080:8080"

16.volumes——-挂载一个目录或者已经存在的数据卷容器(HOST:CONTAINER/HOST:CONTAINER:ro,后者设定数据卷只读,可保护宿主机器的文件系统)
  1. volumes:
  2. // 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
  3. - /var/lib/mysql
  4.  
  5. // 使用绝对路径挂载数据卷
  6. - /opt/data:/var/lib/mysql
  7.  
  8. // 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
  9. - ./cache:/tmp/cache
  10.  
  11. // 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
  12. - ~/configs:/etc/configs/:ro
  13.  
  14. // 已经存在的命名的数据卷。
  15. - datavolume:/var/lib/mysql
  16.  
  17. # 从其他容器或者服务挂在数据卷
  18. volumes_from:
  19. - service_name
  20. - service_name: ro
  21. - container: container_name
  22. - container: container_name:rw

17.network_mode——-网络模式:

  1. network_mode: "bridge"
  2. network_mode: "host"
  3. network_mode: "none"
  4. network_mode: "service:[service name]"
  5. network_mode: "container:[container name/id]"

18.networks———-加入指定网络

  1. services:
  2. some-service:
  3. networks:
  4. - some-network
  5. - other-network

docker compose常用命令

docker-compose up -d  # 在后台启动服务

docker-compose ps   # 查看启动的服务

docker-compose stop #停止服务

  1. #查看帮助
  2. docker-compose -h
  3.  
  4. # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
  5. docker-compose -f docker-compose.yml up -d
  6.  
  7. #启动所有容器,-d 将会在后台启动并运行所有的容器
  8. docker-compose up -d
  9.  
  10. #停用移除所有容器以及网络相关
  11. docker-compose down
  12.  
  13. #查看服务容器的输出
  14. docker-compose logs
  15.  
  16. #列出项目中目前的所有容器
  17. docker-compose ps
  18.  
  19. #构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
  20. docker-compose build
  21.  
  22. #拉取服务依赖的镜像
  23. docker-compose pull
  24.  
  25. #重启项目中的服务
  26. docker-compose restart
  27.  
  28. #删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
  29. docker-compose rm
  30.  
  31. #在指定服务上执行一个命令。
  32. docker-compose run ubuntu ping docker.com
  33.  
  34. #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
  35. docker-compose scale web=3 db=2
  36.  
  37. #启动已经存在的服务容器。
  38. docker-compose start
  39.  
  40. #停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
  41. docker-compose stop

 

 

 

 

 

 

 

 

 

 

 

说说梦想,谈谈感悟 ,聊聊技术,有啥要说的来github留言吧 https://github.com/cjx2328

—— 陈 建鑫

陈建鑫
你可能也喜欢Related Posts
footer logo
未经许可请勿自行使用、转载、修改、复制、发行、出售、发表或以其它方式利用本网站之内容。站长联系:cjx2328#126.com(修改#为@)
Copyright ©ziao Studio All Rights Reserved. E-mail:cjx2328#126.com(#号改成@) 沪ICP备14052271号-3