Docker Compose

一、什么是Docker Compose

Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速地部署分布式应用
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景。

二、Ubuntu下安装Docker Compose

1. 安装
方法一:

运行此命令以下载Docker Compose的当前稳定版本:

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

要安装不同版本的Compose,请替换1.24.0 为要使用的Compose版本。

方法二:

由于网络问题,这种方法可能会失败,可以使用离线安装:
直接从GitHub上的Compose存储库发行页面下载Docker Compose二进制文件
https://github.com/docker/compose/releases
将下载的compose文件 "docker-compose-Linux-x86_64“ 改名为 “docker-compose”,移动到 /usr/local/bin下(不需要解压)

2. 添加可执行权限
chmod +x /usr/local/bin/docker-compose
3.验证是否安装成功:
docker-compose version

三、Docker Compose 常用命令

ps: 列出所有运行容器

docker-compose ps

logs: 查看服务日志输出

docker-compose logs

port: 打印绑定的公共端口,下面命令可以输出 eureka 服务 8761 端口所绑定的公共端口

docker-compose port eureka 8761

build: 构建或者重新构建服务

docker-compose build

start: 启动指定服务已存在的容器

docker-compose start eureka

stop: 停止已运行的服务的容器

docker-compose stop eureka

rm: 删除指定服务的容器

docker-compose rm eureka

up: 构建、启动容器(在docker-compose.yml文件同级路径下执行)

docker-compose up

kill: 通过发送 SIGKILL 信号来停止指定服务的容器

docker-compose kill eureka

pull: 下载服务镜像

scale: 设置指定服务运行容器的个数,以 service=num 形式指定

docker-compose scale user=3 movie=3

run: 在一个服务上执行一个命令

docker-compose run web bash

四、Docker Compose 模板文件属性

version: 指定 docker-compose.yml 文件的写法格式
services: 多个容器集合
build: 配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数

build: ./dir
---------------
build:
    context: ./dir
    dockerfile: Dockerfile
    args:
        buildno: 1

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

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

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: 指定服务所使用的镜像

image: tomcat

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

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

links: 将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况

links:    # 指定服务名称:别名 
    - docker-compose-eureka-server:compose-eureka

volumes: 卷挂载路径

volumes:
  - /lib
  - /var

logs: 日志输出信息

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

参考:https://www.jianshu.com/p/658911a8cff3

五、一个简单的实践

部署一个web项目,包括tomcat和mysql
在/usr/local/下新建docker文件夹,在该文件夹下新建docker-compose.yml文件:

version: '3'
services:
  web:
    restart: always
    image: tomcat
    container_name: tomcat
    ports:
       - 80:8080
    volumes:
       - /usr/local/docker/my_v2ex/ROOT:/usr/local/tomcat/webapps/ROOT

  database:
    restart: always
    image: mysql:5.7.22
    container_name: mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - /usr/local/docker/mysql/conf:/etc/mysql
      - /usr/local/docker/mysql/logs:/var/log/mysql 
      - /usr/local/docker/mysql/data:/var/lib/mysql 

在docker-compose.yml文件同级路径下执行docker-compose up -d,构建、启动容器,进行拉取镜像等操作。这样的话可以将项目放在宿主机的 /usr/local/docker/my_v2ex/ROOT下(我这里项目名是my_v2ex),通过ip访问到web服务。同时,也可以使用客户端连接数据库远程操作

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值