docker_compose---高效管理docker容器

概述:

一个应用系统包含若干个docker容器,甚至每个容器之间也有前后依赖关系,如果每个docker都要手动启停,过于繁琐,程序员要学会找工具偷懒,使用docker compose可以轻松管理应用系统中的多个容器。

docker compose将管理应用系统分为三层,工程,服务,容器。

docker compose运行目录下所有文件(docker-compose.yml)组成一个工程,工程中包含多个服务,每个服务定义了容器运行的镜像、参数、依赖。

docker compose常用指令

 

docker-compose ps 列出所有运行容器

docker-compose build 构建或重新构建服务

docker-compose start example  启动指定服务已存在的容器

docker-compose stop example  停止已运行的服务的容器

docker-compose rm example 删除指定服务的容器

docker-compose up 构建、启动容器

docker-compose down 删除所有容器,镜像

docker-compose环境变量

 环境变量可以在.env文件中定义,格式是每一行都是KEY=VAL

或者在shell中export出来,格式是export KEY=VAL

注:这种默认的环境变量优先级略低,如果是docker-compose run直接从命令行传入相同的KEY,配置文件中的值将会被覆盖。

docker-compose.yml属性

多个容器会涉及到容器之间的通信,可以使用容器名

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

services: 多个容器组合

build: 配置构建时,compose会利用它自动构建镜像

environment: 环境变量配置,可以是字典或数组两种方式

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

env_file: 从文件中获取环境变量,可以指定文件路径,优先级低于environment指定的环境变量

env_file: .env
---------------
env_file:
    - ./common.env

expose: 暴露端口,只将端口暴露给连接的服务,而不暴露给主机

expose:
    - "3000"
    - "8000"

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

network_mode:设置网络模式

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

ports: 对外暴露的端口定义,与expose对应

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

volumes:卷挂载路径

volumes:
  - /lib
  - /var

logs:日志输出信息

--no-color          单色输出,不显示其他颜.
-f, --follow        跟踪日志输出,就是可以实时查看日志
-t, --timestamps    显示时间戳
--tail              从日志的结尾显示,--tail=200

实例

version: '2.2'

services:

  server1:
    image: server1
    build: ./server1
    # we don't need expose it if connected within compose
    # expose:
    #   - "8001"
    ports:
      - "8001:8001"
    environment:
      - XXX=ps
    volumes:
      - ${FOLDER1}:/var/lib/


  server2:
    image: server2
    build: ./server2
    ports:
      - "8000:8000"
    environment:
      - SERVER1_NAME=server1     ##用docker name设置环境变量是访问不到http服务的
    volumes:
      - ${WEB_FOLDER}:/test
    depends_on:
      - server1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晏九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值