zoukankan      html  css  js  c++  java
  • docker-compose.yml文件

    version:指定 docker-compose.yml 的版本

    执行docker-compose.yml文件之前先查看yml文件的版本信息version 和docker-compose的版本是否匹配一致

    不一致要卸载docker-compose安装适配的版本

    1. V1 版本的 docker-compose.yml 只被支持到 docker-compose 1.6.x。再往后的 docker-compose 版本就不再支持 V1 版本的 docker-compose.yml

    V1 版本的 docker-compose.yml 文件格式主要区别就是: 

    - 没有开头的 version 声明 - 没有 services 声明 - 不支持 depends_on - 不支持命名的 volumes, networks, build arguments 声明

    1. V2版本仅支持单机模式
    2. V3版本支持单机模式也支持多机模式
    version: '2'
    services:
      web:  #服务名,自定义的
        image: dockercloud/hello-world  #指定服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
        ports:
          - 8080
        networks:
          - front-tier
          - back-tier
    
      redis:
        image: redis
        links:
          - web
        networks:
          - back-tier
    
      lb:
        image: dockercloud/haproxy
        ports:
          - 80:80
        links:
          - web
        networks:
          - front-tier
          - back-tier
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock 
    
    networks:
      front-tier:
        driver: bridge
      back-tier:
    driver: bridge
    
    version: '2'
    services:
      c-chemical-mysql:  #服务名,自定义的
        build:
          context: ./
          dockerfile: ./doc/db/Dockerfile
        environment:
          MYSQL_ROOT_PASSWORD: root
        restart: always
        container_name: c-chemical-mysql
        image: c-chemical-mysql  #指定服务的镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
        ports:
          - 13306:3306
        volumes:
          - ./doc/conf/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
        privileged: true
    
      c-chemical-redis:
        image: redis:4.0.10
        restart: always
        container_name: c-chemical-redis
        volumes:
          - ./doc/conf/redis/redis.conf:/etc/redis/redis.conf
        command: redis-server /etc/redis/redis.conf

    一份标准配置文件应该包含 version、services、networks 三大部分,其中最关键的就是 services 和 networks 两个部分

    2. build

    服务可以基于镜像Dockerfile两种方式构建。build指定 Dockerfile 的路径。Compose 根据Dockerfile构建镜像,然后使用构建好的镜像启动服务容器。

    Dockerfile的路径可以是绝对路径、相对路径,或者设定上下文根目录,然后以该目录为准指定 Dockerfile。

    build: /path/to/build/dir
    build: ./dir
    build:
      context: ../
      dockerfile: path/of/Dockerfile

    注意 build 都是一个目录,dockerfile 标签指定Dockerfile 文件。
    如果同时指定了 image 和 build 两个标签,那么 Compose 会构建镜像并且把镜像命名为 image 后面的那个名字。

    command

    command 容器启动后默认执行命令

    也可以写成类似 Dockerfile 中的格式:

    command: [bundle, exec, thin, -p, 3000]

    container_name

    Compose 的容器名称格式是:<项目名称><服务名称><序号>
    虽然可以自定义项目名称、服务名称,但是如果你想完全控制容器的命名,可以使用这个标签指定:

    container_name: app

    environment

    环境变量设置,可使用数组或字典两种方式。示例:

    environment:
     RACK_ENV: development
     SHOW: 'true'
     SESSION_SECRET:
    
    environment:
     - RACK_ENV=development
     - SHOW=true
     - SESSION_SECRET
    

      

    privileged: true

    大约在0.6版,privileged被引入docker。
    使用该参数,container内的root拥有真正的root权限。
    否则,container内的root只是外部的一个普通用户权限。
    privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
    甚至允许你在docker容器中启动docker容器。

    开了可以挂载host上的硬盘或其它的设备, 如打印机, 摄像头什么的都可以, volumes和这参数没什么关系

     
    创建容器时没有添加参数  --restart=always ,导致的后果是:当 Docker 重启时,容器未能自动启动。

    现在要添加该参数怎么办呢,方法有二:

    1、Docker 命令修改

    docker container update --restart=always 容器名字
     
  • 相关阅读:
    2017年苹果开发者账号申请——注册苹果账号
    2017年苹果开发者账号申请——公司邓白氏编码申请
    iOS开发-APP测试基本流程
    正则表达式入门教程
    iOS动画
    地图定位CoreLocation框架,地理位置编码与反编码
    第三方库FMDB的使用
    地图 大头针
    地图定位
    iOS应用内跳转系统设置相关界面的方法
  • 原文地址:https://www.cnblogs.com/linuxws/p/12168609.html
Copyright © 2011-2022 走看看