zoukankan      html  css  js  c++  java
  • docker-compose.yml的使用

    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
  • 相关阅读:
    yzm10铺瓷砖 yzm10原创系列
    如何统计博客园的个人博客访问量
    Hybrid设计--账号体系的建设
    Hybrid设计--核心交互
    Hybrid设计--H5和Native,收口
    MySQL数据类型--与MySQL零距离接触 3-2 外键约束的要求解析
    MySQL数据类型--与MySQL零距离接触2-14MySQL默认约束
    css3径向渐变
    MySQL数据类型--与MySQL零距离接触2-13MySQL唯一约束
    MySQL数据类型--与MySQL零距离接触2-12主键约束
  • 原文地址:https://www.cnblogs.com/ray-mmss/p/10868754.html
Copyright © 2011-2022 走看看