Docker docker-compose.yml文件配置和 docker-compose命令

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

扫描二维码关注公众号,回复: 10904902 查看本文章
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
发布了182 篇原创文章 · 获赞 49 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/luolianxi/article/details/105310033