06_Docker-Compose

Docker-Compose

容器编排:
让容器按照所设定好的依赖关系先后启动.

Compose 简介

使用 Compose 基本上是一个三步过程:

  1. 使用 定义您的应用程序的环境,Dockerfile以便它可以在任何地方复制。
  2. 定义组成您的应用程序的服务,docker-compose.yml 以便它们可以在隔离的环境中一起运行。
  3. 运行docker compose upDocker compose command启动并运行你的整个应用程序。您也可以docker-compose up使用 docker-compose 二进制文件运行。

一个docker-compose.yml看起来像这样:

version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

安装 Compose

​ 在 Linux 上,您可以从GitHub 上Compose 存储库发布页面下载 Docker Compose 二进制文件 。按照链接中的说明进行操作,其中包括curl在终端中运行命令以下载二进制文件。这些分步说明也包含在下面。

  • 运行此命令以下载 Docker Compose 的当前稳定版本:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-(uname -s)-(uname -m)" -o /usr/local/bin/docker-compose

# uname -s 获取当前系统版本
# uname -m 获取当前系统架构
root@Rtwork:~# uname -s
Linux
root@Rtwork:~# uname -m
x86_64
  • 对二进制文件应用可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
  • curl使用代理
curl --proxy http://192.168.168.254:1282 -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-(uname -s)-(uname -m)" -o /usr/local/bin/docker-compose

Compose命令补全

​ Compose命令补全在Bash和Zsh下的安装方式不同,CentOS 7默认使用Bash,其他Shell以及其他系统上的安装,请查看Docker的官方文档:https://docs.docker.com/compose/completion/

curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

​ 这样,在重新登录后,输入docker-compose 命令后,按下TAB键盘,效果如下:

[root@localhost ~]# docker-compose 
build    config   down     exec     kill     pause    ps       push     rm       scale    stop     up       bundle   create   events   help     logs     port     pull     restart  run      start    unpause  version

Compose 文件编写

build

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

version: "3.9"
services:
  webapp:
    build: ./dir

​ 或者,作为具有在上下文中指定的路径以及可选的Dockerfileargs 的对象

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

​ 如果您指定imageas build,则 Compose 使用 中指定的webapp和 可选命名构建的图像:tag``image

build: ./dir
image: webapp:tag

depends_on

​ 表示服务之间的依赖关系。服务依赖会导致以下行为:

  • docker-compose up按依赖顺序启动服务。在下面的例子中,dbredis在 之前启动web
  • docker-compose up SERVICE自动包含SERVICE的依赖项。在下面的示例中,docker-compose up web还创建并启动dbredis
  • docker-compose stop按依赖顺序停止服务。在以下示例中,webdb和之前停止redis

简单的例子:

version: "3.9"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

image

​ 指定启动容器的镜像。可以是存储库/标签或部分图像 ID。

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

​ 如果映像不存在,Compose 会尝试拉取它,除非您还指定了build,在这种情况下,它会使用指定的选项构建它并使用指定的标签对其进行标记。

expose

​ 公开端口而不将它们发布到主机——它们只能被链接的服务访问。只能指定内部端口。

expose:
  - "3000"
  - "8000"

ports

​ 共有三个选项:

  • 指定两个端口 ( HOST:CONTAINER)
  • 仅指定容器端口(为主机端口选择了一个临时主机端口)。
  • 指定要绑定到 AND 两个端口的主机 IP 地址(默认为 0.0.0.0,表示所有接口):( IPADDR:HOSTPORT:CONTAINERPORT)。如果 HOSTPORT 为空(例如127.0.0.1::80),则会选择一个临时端口来绑定到主机上。

​ 以HOST:CONTAINER格式映射端口时,使用低于 60 的容器端口时可能会遇到错误结果,因为 YAML 将格式xx:yy中的数字解析为 base-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"
  - "127.0.0.1::5000"
  - "6060:6060/udp"
  - "12400-12500:1240"

networks

​ 要加入的网络,引用[top-level networks key]下的条目 。

services:
  some-service:
    networks:
     - some-network
     - other-network
Work Blog » 06_Docker-Compose
分享到:
赞(0) 打赏

评论抢沙发

评论前必须登录!

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏