美文网首页
Docker入门与实践(三)

Docker入门与实践(三)

作者: 宏势 | 来源:发表于2023-01-05 17:56 被阅读0次

服务的编排

Docker三剑客Docker ComposeDocker MachineDocker Swarm分别是Docker官方开源的三个项目。

  • Docker Compose负责实现对 Docker 容器集群的快速编排(适合单主机环境)。
  • Docker Machine负责在多种平台上快速安装 Docker 环境,是一种CLI工具。
  • Docker Swarm提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案

Docker Compose

安装

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
sudo chmod +x /usr/local/bin/docker-compose #添加可执行权限
docker-compose --version #查看版本

入门例子

创建docker-compose.yml文件

  version: "3.8"
  services:
    web1:
      build: .
      ports:
        - "5000:5000"
      environment:
         active:""
      volumes:
        - "./config:/config"
    web2:
      build:
         context: .
         dockerfile: Dockerfile
      ports:
        - "5001:5001"
      volumes:
        - "./config:/config"
    redis:
      image: "redis:alpine"

变量设置

通过environment属性设置

web:
  environment:
    - DEBUG=1  

类似通过docker run -e DEBUG=1 ... 或者 docker-compose run -e DEBUG=1 ...

通过env_file指定文件传递

web:
  env_file:
    - web-variables.env

变量文件格式:key=value,例如:DEBUG=1;
类似docker run --env-file=web-variables.env

通过默认文件.env,设置变量

$ cat .env
TAG=v1.5

$ cat docker-compose.yml
version: '3'
services:
  web:
    image: "webapp:${TAG}"  

通过shell环境变量

$ export TAG=v2.0
$ cat docker-compose.yml
version: '3'
services:
  web:
    image: "webapp:${TAG}"  # 该行解析结果 image: "webapp:v2.0"  
  • 运行时传递变量给dockerfile ENV 变量
  • dockerfile里面也有ARG, 与ENV区别在于ARG是在编译镜像阶段传递的,ENV可以在编译阶段生成默认值,运行容器时传递变量覆盖,ARG是唯一一个可以放在FROM 前面的指令
  • docker-compose 环境变量采用${TAG}取值,无法取得当前文件设置的值
  • 同一个变量优先级从高到低如下:
    compose 文件指定environment最高 > shell 环境变量 > env_file文件 > dockerfile

网络设置

网络设置只支持version 2以上(含),假设目录名是myapp,执行docker-compse up,默认网络myapp_default 会被创建,docker-compose.yml 里面的容器会使用该网络

加入已存在的网络

docker network creat my-pre-existing-network  

version: 3.8
....
networks:
  default:
    external:
      name: my-pre-existing-network

配置默认网络

version: "3"
services:
  web:
    build: .
    ports:
      - "8000:8000"
  db:
    image: postgres
networks:
  default:
    # Use a custom driver
    driver: custom-driver-1

自定义网络

<details>
<summary>示例</summary>

version: "3"
services:
  proxy:
    build: ./proxy
    networks:
      - frontend
  app:
    build: ./app
    networks:
      - frontend
      - backend
  db:
    image: postgres
    networks:
      - backend

networks:
  frontend:
    # Use a custom driver
    driver: custom-driver-1
  backend:
    # Use a custom driver which takes special options
    driver: custom-driver-2
    driver_opts:
      foo: "1"
      bar: "2"

</details>

服务扩展(两种方式)

使用多个docker-compose.yml 文件

docker-compose.yml

version: "3.8"
services:
  web:
    image: example/my_web_app:latest

docker-compose.prod.yml

version: "3.8"
services:
    web:
      ports:
        - 80:80
      environment:
        PRODUCTION: 'true'  

部署

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

采用多个docker-compose文件部署服务,会合并多个文件的内容(并集),如果遇到有冲突的参数(一个属性在多个文件里面定义,以最后一个指定的文件为准)

使用extends, version 3(已经去除)

具体参见官网: https://docs.docker.com/compose/extends/

Docker Swarm

由于目前主流采用k8s,暂不往下写,可以看后面写的K8S

相关文章

  • docker入门笔记

    《Docker技术入门与实践》笔记 2 核心概念 Docker的三个核心概念分别为:镜像、容器和仓库。 2.1 镜...

  • Docker 基本用法

    Docker 参考 极客学院Wiki:Docker入门基础教程 Gitbook:Docker —— 从入门到实践 ...

  • Docker安装与国内加速

    Docker 简介 Docker官网Docker GithubDocker —— 从入门到实践Docker是一个开...

  • docker技术入门与实践(三)

    Dockerfile结构 通常dockfile包含4部分 基础镜像 维护者信息 镜像操作指令 容器启动时执行指令 ...

  • Docker

    Docker —— 从入门到实践 https://yeasy.gitbooks.io/docker_practic...

  • Ubuntu下安装Docker

    《Docker Practice(Docker从入门到实践)》学习笔记本文转自:Ubuntu 安装 Docker ...

  • Spring Boot与Docker部署

    了解Docker的一些基础知识Docker——入门实战Docker —— 从入门到实践 Centos7上安装doc...

  • Docker入门实战学习总结(脑图)

    参考资料:GitBook Docker — 从入门到实践

  • docker简介及mac下安装docker

    最近系统的学习docker,参考资料Docker-从入门到实践,docker官网 docker是什么 Docker...

  • 2018-08-12

    Docker常用命令 从入门到实践:https://yeasy.gitbooks.io/docker_practi...

网友评论

      本文标题:Docker入门与实践(三)

      本文链接:https://www.haomeiwen.com/subject/eetdcdtx.html