博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker-compose.yml的使用
阅读量:6293 次
发布时间:2019-06-22

本文共 4115 字,大约阅读时间需要 13 分钟。

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# 设定上下文跟目录,以此目录指定Dockerfilebuild:    context: ../    dockerfile: path/Dockerfile# 给Dockerfile构建的镜像命名build: ./dirimages: nginx:latest# 构建过程中指定环境变量,构建成功后取消build:   context: .   args:      buildno: 1      password: secretorbuild:   context: .   args:      - buildno=1      - password=secret##与ENV不同,ARG允许空值

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

command: bundle exec thin -p 3000or  写成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.8ordns:    - 8.8.8.8    - 9.9.9.9dns_search: example.comdns_search:    - xxxx    - xxxx

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

tmpfs: /runtmpfs:   - /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

 

转载于:https://www.cnblogs.com/ray-mmss/p/10868754.html

你可能感兴趣的文章
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
入门到进阶React
查看>>
SVN 命令笔记
查看>>
检验手机号码
查看>>
重叠(Overlapped)IO模型
查看>>
Git使用教程
查看>>
使用shell脚本自动监控后台进程,并能自动重启
查看>>
Flex&Bison手册
查看>>
solrCloud+tomcat+zookeeper集群配置
查看>>
/etc/fstab,/etc/mtab,和 /proc/mounts
查看>>
Apache kafka 简介
查看>>
socket通信Demo
查看>>
技术人员的焦虑
查看>>