精华内容
下载资源
问答
  • docker-compose详解

    万次阅读 多人点赞 2019-02-18 11:06:19
    1 安装: 官方: curl -L ...chmod +x /usr/local/bin/docker-compose 或者使用包管理工具:...

    1 安装:

    官方:

    curl -L https://github.com/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

    或者使用包管理工具:

    apt-get install docker-compose

    2 使用场景

    docker-compose用来单机上编排容器(定义和运行多个容器,使容器能互通)

    Eg:前端和后端部署在一台机器上,现在直接通过编写docker-compose文件对多个服务(可定义依赖,按顺序启动服务)同时进行启动/停止/更新

    注:

    docker-compose将所管理的容器分为3层结构:project  service  container

    docker-compose.yml组成一个project,project包括多个service,每个service定义了容器运行的镜像(或构建镜像),网络端口,文件挂载,参数,依赖等,每个service包括同一个镜像多个容器实例

    即 project 包含 service ,service 包含 container 

    3 编写docker-compose.yml

    官网地址:https://docs.docker.com/compose/compose-file/

    version: '3'
    services:
      back:
        image: backService:1.0
        container_name: back
        environment:
          - name=tom
          - DB_PATH=jdbc:sqlite:/data/ns.db
        restart: always
        privileged: true
        ports:
          - "9000:9000"
        networks:
          - "net"
        volumes:
          - "/root/k3s.kube.config:/k3s.kube.config"
          - "/root/data:/data"
          - "/etc/network/interfaces:/etc/network/interfaces"
      front:
        image: front:1.0
        container_name: front
        restart: always
        ports:
          - "10087:80"
        networks:
          - "net"
        volumes:
          - "/root/nginx.conf:/etc/nginx/nginx.conf"
    networks:
      net:
        driver: bridge

    version:指定 docker-compose.yml 文件的写法格式

    services:多个容器集合environment:环境变量配置,可以用数组或字典两种方式

    environment:
        RACK_ENV: "development"
        SHOW: "ture"
    -------------------------
    environment:
        - RACK_ENV="development"
        - SHOW="ture"

    image:指定服务所使用的镜像

    version: '2'
    services:
      redis:
        image: redis:alpine

    expose:定义容器用到的端口(一般用来标识镜像使用的端口,方便用ports映射

    expose:
        - "3000"
        - "8000"

    ports:定义宿主机端口和容器端口的映射,可使用宿主机IP+宿主机端口进行访问 宿主机端口:容器端口

    ports:   # 暴露端口信息  - "宿主机端口:容器暴露端口"
    - "5000"
    - "8081:8080"

    注:仅指定容器端口时,宿主机将会随机选择端口 

    volumes:卷挂载路径,定义宿主机的目录/文件和容器的目录/文件的映射  宿主机路径:容器路径

    volumes:
      - "/var/lib/mysql"
      - "hostPath:containerPath"
      - "root/configs:/etc/configs"
    

    depend_on: 规定service加载顺序,例如数据库服务需要在后台服务前运行

    extra_hosts:类似于docker里的--add-host参数 配置DNS域名解析(域名和IP的映射)

    extra_hosts:
     - "googledns:8.8.8.8"
     - "dockerhub:52.1.157.61"

    相当于在容器种的/etc/hosts文件里增加

    8.8.8.8 googledns
    52.1.157.61 dockerhub

    restart: always :配置重启,docker每次启动时会启动该服务

    restart: always

    privileged: true :开启特权模式

    privileged: true

    user: root :指定容器运行的用户名

    user: root

    links:将指定容器连接到当前连接,可以设置别名,已废弃,推荐使用networks

    networks

    可参考:https://www.cnblogs.com/jsonhc/p/7823286.html

    version: '3'
    services:
      front:
        image: front
        container_name: front
        depends_on:
          - php
        ports:
          - "80:80"
        networks:
          - "net1"

        volumes:
          - "/www:/usr/local/nginx/html"
      back:
        image: back
        container_name:back
        expose: 
          - "9000"
        networks:
          - "net1"

        volumes:
          - "/www:/usr/local/nginx/html"

    networks:
      net1:
        driver: bridge

    front里可以直接用back替换IP访问back

    logging:日志服务

    driver:默认json-file,可选syslog

    logging:
      driver: syslog
      options:
        syslog-address: "tcp://192.168.0.42:123"

    network_mode:设置网络模式

    network_mode: "bridge"
    network_mode: "host"
    network_mode: "none"
    network_mode: "service:[service name]"
    network_mode: "container:[container name/id]"

    bridge:默认,需要单独配置ports映射主机port和服务的port,并且开启了容器间通信

    host:和宿主机共享网络,比如service是8081端口,无需配置ports,直接可以用主机IP:8081访问

     

    cap_add cap_drop:赋予/删除 容器某些能力

    可运行 man 7 capabilities 查看所有能力

    build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 路径

    注:如果指定build同时也指定image,那么会从build里构建,镜像的名字和tag将取image指定的

    build: .
    image: webapp:tag

    command:覆盖容器启动后默认执行的命令

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

     

    4 docker-compose命令:

    官网地址:https://docs.docker.com/compose/reference/overview/

    注意:

    以下都需要在docker-compose.yml所在目录下执行,且名字就是默认的docker-compose.yml,否则需要加上 -f yml地址

    Eg:  docker-compose -f /usr/docker/docker-compose1.yml ps

    * 表示常用

    * docker-compose pull:拉取服务里定义的镜像

    * docker-compose ps :列出project所有运行容器(容器名 = 目录名_service_index  index表示容器序数,从1开始) 

    Eg:

    docker-compose build:构建/重新构建所有镜像

    当某个service的Dockerfile改变时,即镜像发生改变需要重新生成时,如果仅仅是docker-compose.yml改变,只需要up重新启动project即可

    docker-compose start [serviceName]:启动已存在但停止的所有service

    (可选)serviceName:表示启动某一个service

    * docker-compose up -d(相当于 build + start  构建(容器)并启动(容器)整个project的所有service

    -d:后台进程

    --scale:指定服务运行的容器个数(如果服务有对外的端口就不能指定多个容器,因为端口已经被占用)   Eg:docker-compose up -d --scale web=1 --scale redis=2

    docker-compose stop [serviceName]:停止运行的service

    (可选)serviceName:表示停止某一个service

    docker-compose rm -f [serviceName]:删除已停止的所有service

    (可选)serviceName:表示删除已停止某一个service(可以用docker-compose up重新构建service)

    -f :删除不在询问

    * docker-compose down -v(相当于 stop + rm:停止并移除整个project的所有services

    -v :删除挂载卷和volunme的链接

    * docker-compose logs [serviceName]:查看服务内所有容器日志输出,

    加上serviceName表示输出某一个service的日志

    -f:实时输出日志

    docker-compose run service command:在某个服务上运行命令

    Eg:docker-compose run web ping www.baidu.com

    * docker-compose exec [serviceName] sh:进入到某个容器

    --index:2  :当服务内有多个容器时,需要指定第几个,默认是第一个  Eg:docker-compose exec --index=2 web sh

    docker-compose restart [serviceName]: 重启服务

    docker-compose config验证和查看compose文件

    docker-compose images列出所用的镜像

    docker-cpmpose scale设置服务个数 Eg:docker-compose scale web=2 worker=3 

    docker-compose pause [serviceName]暂停服务

    docker-compose unpause [serviceName]恢复服务

    常见流程:

    启动:创建docker-compose.yaml  ->  docker-compose pull  -> docker-compose up -d

    更新:docker-compose down -v -> docker-compose pull -> docker-compose up -d 

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 安装步骤 1.下载安装 sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$...sudo chmod +x /usr/local/bin/docker-compose 3.安装验证 docker-compose --version ...

    安装步骤

    1.下载安装

    sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    2.目录授权

    sudo chmod +x /usr/local/bin/docker-compose
    

    3.安装验证

    docker-compose --version
    
    展开全文
  • docker-compose教程(安装,使用, 快速入门)

    万次阅读 多人点赞 2017-12-03 22:31:45
    教程基于ubuntu下最新的...Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 Compose 通过一个配...

    教程基于ubuntu下最新的compose版本3 
    参考: https://docs.docker.com/compose/overview/

    1.Compose介绍

    Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。 
    Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

    2.Compose和Docker兼容性

    compose文件格式版本 docker版本
    3.4 17.09.0+
    3.3 17.06.0+
    3.2 17.04.0+
    3.1 1.13.1+
    3.0 1.13.0+
    2.3 17.06.0+
    2.2 1.13.0+
    2.1 1.12.0+
    2.0 1.10.0+
    1.0 1.9.1.+

     

    Docker版本变化说明

    Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。

    Docker的linux发行版的软件仓库从以前的https://apt.dockerproject.org和https://yum.dockerproject.org变更为目前的https://download.docker.com, 软件包名字改为docker-ce和docker-ee。

     

    3.安装docker

    Docker的社区版(Docker Community Edition)叫做docker-ce。老版本的Docker包叫做docker或者docker-engine,如果安装了老版本的docker得先卸载然后再安装新版本的docker。docker的发展非常迅速,apt源的更新往往比较滞后。所以docker官网推荐的安装方式都是下载docker安装脚本安装。 
    卸载老旧的版本(若未安装过可省略此步):

    $ sudo apt-get remove docker docker-engine docker.io

    安装最新的docker:

    $ curl -fsSL get.docker.com -o get-docker.sh
    $ sudo sh get-docker.sh

    shell会提示你输入sudo的密码,然后开始执行最新的docker过程 
    或者

    $ curl -sSL https://get.docker.com/ | sh 

    确认Docker成功最新的docker:

    $ sudo docker run hello-world

    4.安装docker-compose

    两种最新的docker安装方式

    1.从github上下载docker-compose二进制文件安装

    • 下载最新版的docker-compose文件 
    sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

           若是github访问太慢,可以用daocloud下载

    sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    • 添加可执行权限 
      sudo chmod +x /usr/local/bin/docker-compose

       

    • 测试安装结果 
      $ docker-compose --version
      
      docker-compose version 1.16.1, build 1719ceb

    2.pip安装

    sudo pip install docker-compose

    5.docker-compose文件结构和示例

    docker-compose文件结构

    docker-compose.yml:

    
    version: "3"
    services:
    
      redis:
        image: redis:alpine
        ports:
          - "6379"
        networks:
          - frontend
        deploy:
          replicas: 2
          update_config:
            parallelism: 2
            delay: 10s
          restart_policy:
            condition: on-failure
    
      db:
        image: postgres:9.4
        volumes:
          - db-data:/var/lib/postgresql/data
        networks:
          - backend
        deploy:
          placement:
            constraints: [node.role == manager]
    
      vote:
        image: dockersamples/examplevotingapp_vote:before
        ports:
          - 5000:80
        networks:
          - frontend
        depends_on:
          - redis
        deploy:
          replicas: 2
          update_config:
            parallelism: 2
          restart_policy:
            condition: on-failure
    
      result:
        image: dockersamples/examplevotingapp_result:before
        ports:
          - 5001:80
        networks:
          - backend
        depends_on:
          - db
        deploy:
          replicas: 1
          update_config:
            parallelism: 2
            delay: 10s
          restart_policy:
            condition: on-failure
    
      worker:
        image: dockersamples/examplevotingapp_worker
        networks:
          - frontend
          - backend
        deploy:
          mode: replicated
          replicas: 1
          labels: [APP=VOTING]
          restart_policy:
            condition: on-failure
            delay: 10s
            max_attempts: 3
            window: 120s
          placement:
            constraints: [node.role == manager]
    
      visualizer:
        image: dockersamples/visualizer:stable
        ports:
          - "8080:8080"
        stop_grace_period: 1m30s
        volumes:
          - "/var/run/docker.sock:/var/run/docker.sock"
        deploy:
          placement:
            constraints: [node.role == manager]
    
    networks:
      frontend:
      backend:
    
    volumes:
      db-data:

    docker-compose使用示例

    通过docker-compose构建一个在docker中运行的基于python flask框架的web应用。

    注意:确保你已经安装了Docker Engine和Docker Compose。 您不需要安装Python或Redis,因为这两个都是由Docker镜像提供的。

    Step 1: 定义python应用

    • 1 .创建工程目录
    $ mkdir compose_test
    $ cd compose_test
    $ mkdir src      # 源码文件夹
    $ mkdir docker  # docker配置文件夹

    目录结构如下: 

    └── compose_test
        ├── docker
        │   └── docker-compose.yml
        ├── Dockerfile
        └── src
            ├── app.py
            └── requirements.txt

     

    • 2 .在compose_test/src/目录下创建python flask应用 compose_test/src/app.py文件。
    from flask import Flask
    from redis import Redis
    
    app = Flask(__name__)
    redis = Redis(host='redis', port=6379)
    
    @app.route('/')
    def hello():
        count = redis.incr('hits')
        return 'Hello World! I have been seen {} times.\n'.format(count)
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", debug=True)
    • 3 .创建python 需求文件 compose_test/src/requirements.txt
    flask
    redis

    Step 2: 创建容器的Dockerfile文件

    一个容器一个Dockerfile文件,在compose_test/目录中创建Dockerfile文件:

    FROM python:3.7
    
    COPY src/ /opt/src
    WORKDIR /opt/src
    
    RUN pip install -r requirements.txt
    CMD ["python", "app.py"]

    Dockerfile文件告诉docker了如下信息:

    从Python 3.6镜像开始构建一个容器镜像。 

    复制src(即compose_test/src)目录到容器的/opt/src目录。 

    将容器的工作目录设置为/opt/src(通过docker exec -it your_docker_container_id_or_name bash 进入容器后的默认目录)。 
    安装Python依赖关系。
    将容器的默认命令设置为python app.py。

    Step 3: 定义docker-compose脚本

    在compose_test/docker/目录下创建docker-compose.yml文件,并在里面定义服务,内容如下:

    version: '3'
    services:
      web:
        build: ../
        ports:
         - "5000:5000"
      redis:
        image: "redis:3.0.7"

    这个compose文件定义了两个服务,即定义了web和redis两个容器。 
    web容器: 
    * 使用当前docker-compose.yml文件所在目录的上级目录(compose_test/Dockerfile)中的Dockerfile构建映像。 
    * 将容器上的暴露端口5000映射到主机上的端口5000。 我们使用Flask Web服务器的默认端口5000。 
    redis容器: 
    * redis服务使用从Docker Hub提取的官方redis镜像3.0.7版本。

    Step 4: 使用Compose构建并运行您的应用程序

    在compose_test/docker/目录下执行docker-compose.yml文件:

    $ docker-compose up
    # 若是要后台运行: $ docker-compose up -d
    # 若不使用默认的docker-compose.yml 文件名:
    $ docker-compose -f server.yml up -d 
    
    
     

    然后在浏览器中输入http://0.0.0.0:5000/查看运行的应用程序。

    Step 5: 编辑compose文件以添加文件绑定挂载

    上面的代码是在构建时静态复制到容器中的,即通过Dockerfile文件中的COPY src /opt/src命令实现物理主机中的源码复制到容器中,这样在后续物理主机src目录中代码的更改不会反应到容器中。 
    可以通过volumes 关键字实现物理主机目录挂载到容器中的功能(同时删除Dockerfile中的COPY指令,不需要创建镜像时将代码打包进镜像,而是通过volums动态挂载,容器和物理host共享数据卷):

    version: '3'
    services:
      web:
        build: ../
        ports:
         - "5000:5000"
        volumes:
         - ../src:/opt/src
      redis:
        image: "redis:3.0.7"

    通过volumes(卷)将主机上的项目目录(compose_test/src)挂载到容器中的/opt/src目录下,允许您即时修改代码,而无需重新构建映像。

    Step 6: 重新构建和运行应用程序

    使用更新的compose文件构建应用程序,然后运行它。

    $ docker-compose up -d

    6.compose常用服务配置参考

    Compose文件是一个定义服务,网络和卷的YAML文件。 Compose文件的默认文件名为docker-compose.yml。

    **提示:您可以对此文件使用.yml或.yaml扩展名。 他们都工作。

    与docker运行一样,默认情况下,Dockerfile中指定的选项(例如,CMD,EXPOSE,VOLUME,ENV)都被遵守,你不需要在docker-compose.yml中再次指定它们。

    同时你可以使用类似Bash的$ {VARIABLE} 语法在配置值中使用环境变量,有关详细信息,请参阅变量替换

    本节包含版本3中服务定义支持的所有配置选项。

    build

    build 可以指定包含构建上下文的路径:

    version: '2'
    services:
      webapp:
        build: ./dir

    或者,作为一个对象,该对象具有上下文路径和指定的Dockerfile文件以及args参数值:

    version: '2'
    services:
      webapp:
        build:
          context: ./dir
          dockerfile: Dockerfile-alternate
          args:
            buildno: 1

    webapp服务将会通过./dir目录下的Dockerfile-alternate文件构建容器镜像。 
    如果你同时指定image和build,则compose会通过build指定的目录构建容器镜像,而构建的镜像名为image中指定的镜像名和标签。

    build: ./dir
    image: webapp:tag

    这将由./dir构建的名为webapp和标记为tag的镜像。

    context

    包含Dockerfile文件的目录路径,或者是git仓库的URL。 
    当提供的值是相对路径时,它被解释为相对于当前compose文件的位置。 该目录也是发送到Docker守护程序构建镜像的上下文。

    dockerfile

    备用Docker文件。Compose将使用备用文件来构建。 还必须指定构建路径。

    args

    添加构建镜像的参数,环境变量只能在构建过程中访问。 
    首先,在Dockerfile中指定要使用的参数:

    ARG buildno
    ARG password
    
    RUN echo "Build number: $buildno"
    RUN script-requiring-password.sh "$password"

    然后在args键下指定参数。 你可以传递映射或列表:

    build:
      context: .
      args:
        buildno: 1
        password: secret
    
    build:
      context: .
      args:
        - buildno=1
        - password=secret

    ** 注意:YAML布尔值(true,false,yes,no,on,off)必须用引号括起来,以便解析器将它们解释为字符串。

    image

    指定启动容器的镜像,可以是镜像仓库/标签或者镜像id(或者id的前一部分)

    image: redis
    image: ubuntu:14.04
    image: tutum/influxdb
    image: example-registry.com:4000/postgresql
    image: a4bc65fd

    如果镜像不存在,Compose将尝试从官方镜像仓库将其pull下来,如果你还指定了build,在这种情况下,它将使用指定的build选项构建它,并使用image指定的名字和标记对其进行标记。

    container_name

    指定一个自定义容器名称,而不是生成的默认名称。

    container_name: my-web-container

    由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到多个容器。

    volumes

    卷挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro),挂载数据卷的默认权限是读写(rw),可以通过ro指定为只读。 
    你可以在主机上挂载相对路径,该路径将相对于当前正在使用的Compose配置文件的目录进行扩展。 相对路径应始终以 . 或者 .. 开始。

    volumes:
      # 只需指定一个路径,让引擎创建一个卷
      - /var/lib/mysql
    
      # 指定绝对路径映射
      - /opt/data:/var/lib/mysql
    
      # 相对于当前compose文件的相对路径
      - ./cache:/tmp/cache
    
      # 用户家目录相对路径
      - ~/configs:/etc/configs/:ro
    
      # 命名卷
      - datavolume:/var/lib/mysql

    但是,如果要跨多个服务并重用挂载卷,请在顶级volumes关键字中命名挂在卷,但是并不强制,如下的示例亦有重用挂载卷的功能,但是不提倡。

    version: "3"
    
    services:
      web1:
        build: ./web/
        volumes:
          - ../code:/opt/web/code
      web2:
        build: ./web/
        volumes:
          - ../code:/opt/web/code
    

    ** 注意:通过顶级volumes定义一个挂载卷,并从每个服务的卷列表中引用它, 这会替换早期版本的Compose文件格式中volumes_from。

    version: "3"
    
    services:
      db:
        image: db
        volumes:
          - data-volume:/var/lib/db
      backup:
        image: backup-service
        volumes:
          - data-volume:/var/lib/backup/data
    
    volumes:
      data-volume:

    command

    覆盖容器启动后默认执行的命令。

    command: bundle exec thin -p 3000
    

    该命令也可以是一个类似于dockerfile的列表:

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

    links

    链接到另一个服务中的容器。 请指定服务名称和链接别名(SERVICE:ALIAS),或者仅指定服务名称。

    web:
      links:
       - db
       - db:database
       - redis

    在当前的web服务的容器中可以通过链接的db服务的别名database访问db容器中的数据库应用,如果没有指定别名,则可直接使用服务名访问。

    链接不需要启用服务进行通信 - 默认情况下,任何服务都可以以该服务的名称到达任何其他服务。 (实际是通过设置/etc/hosts的域名解析,从而实现容器间的通信。故可以像在应用中使用localhost一样使用服务的别名链接其他容器的服务,前提是多个服务容器在一个网络中可路由联通)

    links也可以起到和depends_on相似的功能,即定义服务之间的依赖关系,从而确定服务启动的顺序。

    external_links

    链接到docker-compose.yml 外部的容器,甚至并非 Compose 管理的容器。参数格式跟 links 类似。

    external_links:
     - redis_1
     - project_db_1:mysql
     - project_db_1:postgresql

    expose

    暴露端口,但不映射到宿主机,只被连接的服务访问。 
    仅可以指定内部端口为参数

    expose:
     - "3000"
     - "8000"

    ports

    暴露端口信息。 
    常用的简单格式:使用宿主:容器 (HOST:CONTAINER)格式或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。

    ** 注意:当使用 HOST:CONTAINER 格式来映射端口时,如果你使用的容器端口小于 60 你可能会得到错误得结果,因为 YAML 将会解析 xx:yy 这种数字格式为 60 进制。所以建议采用字符串格式。

    简单的短格式:

    ports:
     - "3000"
     - "3000-3005"
     - "8000:8000"
     - "9090-9091:8080-8081"
     - "49100:22"
     - "127.0.0.1:8001:8001"
     - "127.0.0.1:5000-5010:5000-5010"
     - "6060:6060/udp"

    在v3.2中ports的长格式的语法允许配置不能用短格式表示的附加字段。 
    长格式:

    ports:
      - target: 80
        published: 8080
        protocol: tcp
        mode: host

    target:容器内的端口 
    published:物理主机的端口 
    protocol:端口协议(tcp或udp) 
    mode:host 和ingress 两总模式,host用于在每个节点上发布主机端口,ingress 用于被负载平衡的swarm模式端口。

    restart

    no是默认的重启策略,在任何情况下都不会重启容器。 指定为always时,容器总是重新启动。 如果退出代码指示出现故障错误,则on-failure将重新启动容器。

    restart: "no"
    restart: always
    restart: on-failure
    restart: unless-stopped

    environment

    添加环境变量。 你可以使用数组或字典两种形式。 任何布尔值; true,false,yes,no需要用引号括起来,以确保它们不被YML解析器转换为True或False。 
    只给定名称的变量会自动获取它在 Compose 主机上的值,可以用来防止泄露不必要的数据。

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

    ** 注意:如果你的服务指定了build选项,那么在构建过程中通过environment定义的环境变量将不会起作用。 将使用build的args子选项来定义构建时的环境变量。

    pid

    将PID模式设置为主机PID模式。 这就打开了容器与主机操作系统之间的共享PID地址空间。 使用此标志启动的容器将能够访问和操作裸机的命名空间中的其他容器,反之亦然。即打开该选项的容器可以相互通过进程 ID 来访问和操作。

    pid: "host"

    dns

    配置 DNS 服务器。可以是一个值,也可以是一个列表。

    dns: 8.8.8.8
    dns:
      - 8.8.8.8
      - 9.9.9.9

     

     

     

    展开全文
  • docker-compose快速搭建docker私有仓库

    万次阅读 2020-07-20 09:57:38
    创建docker-compose.yml并填入如下内容 version: '3' services: registry: restart: always image: registry:2 ports: - 5000:5000 environment: REGISTRY_HTTP_TLS_CERTIFICATE: /certs/registry.crt ...
    1. 创建docker-compose.yml并填入如下内容
      version: '3'
      services:
       registry:
        restart: always
        image: registry:2
        ports:
          - 5000:5000
        environment:
          REGISTRY_HTTP_TLS_CERTIFICATE: /certs/registry.crt
          REGISTRY_HTTP_TLS_KEY: /certs/registry.key
          REGISTRY_AUTH: htpasswd
          REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
          REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
        volumes:
          - /home/docker/registry:/var/lib/registry
          - /home/registry/cert:/certs
          - /home/registry/auth:/auth
       registry-ui:
         image: konradkleine/docker-registry-frontend:v2
         restart: always
         environment:
           - ENV_DOCKER_REGISTRY_HOST=registry
           - ENV_DOCKER_REGISTRY_PORT=5000
           - ENV_DOCKER_REGISTRY_USE_SSL=1
         ports:
           - "5001:80"

      其中REGISTRY_HTTP_TLS_CERTIFICATE为ssl证书,此证书可以自己生成也可以去阿里云等网站申请,由于是私有仓库,笔者建议采用私有证书

    2. 复制此文件,并执行docker-compose up命令

    3. 创建登录用户和密码

      docker run --entrypoint htpasswd registry:2 -Bbn username password >> /home/registry/auth/htpasswd

         

    4. 打开浏览器,输入http://本机ip:5001看到如下页面即代表访问成功

    5. 点击btowse repositories会弹出用户名密码输入框,输入上面创建的用户名密码即可查看仓库中所有的镜像

    展开全文
  • docker-compose

    2020-12-19 09:37:07
    Docker Compose 介绍 Docker Compose 是 Docker 容器进行编排的工具,用于定义和运行多容器Docker应用程序的工具,...docker-compose.yml 定义组成应用的各服务 docker-compose up 启动整个应用 compose 模板文件是
  • Docker-Compose

    2020-07-08 19:57:46
    之前运行一个镜像,需要添加大量的参数,可以通过Docker-Compose编写这些参数。而且Docker-Compose可以帮助我们批量的管理容器。这些信息只需要通过一个docker-compose.yml文件去维护即可。 1.下载并安装Docker-...
  • Docker-compose

    2020-08-08 17:38:07
    然后将文件上传到 /usr/local/bin/ 文件夹下,然后将其重命名为docker-compose,修改此文件的权限,增加可执行:chmod +x /usr/local/bin/docker-compose docker-compose -version 2、命令 docker-compo

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,952
精华内容 14,380
关键字:

docker-compose