新手入门 6. Docker 服务编排

一、服务编排概念

新手入门  6. Docker 服务编排-每日运维
服务编排:按照一定的业务规则批量管理容器。

二、Docker Compose

image.png

2.1 安装 Docker Compose

centos7 系统安装

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。
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
# 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
# 查看版本信息
docker-compose -version

ubuntu18.04 系统安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose version

2.2 卸载 Docker Compose

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

2.3 使用docker compose编排nginx+springboot项目

  • 创建docker-compose目录
  • mkdir ~/docker-compose
    cd ~/docker-compose
  • 编写 docker-compose.yml 文件
  • version: '3'
    services:
    nginx:
    image: nginx
    ports:
    - 80:80
    links:
    - app
    volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
    app:
    image: app
    expose:
    - "8080"

    参数说明:

    • version:docker-compose 的版本。
    • services:表示你要启动的服务。

    image.png

    此处的 nginx 和 app 可以自定义名字。

    • ports:端口映射。
    • links:当前的nginx项目,可以访问到 app 项目。
    • volumes:数据卷。
    • expose:暴露的端口。
  • 创建./nginx/conf.d目录
  • mkdir -p ./nginx/conf.d
    
  • 在./nginx/conf.d目录下 编写zzy.conf文件
  • server {
    listen 80;
    access_log off;
    location / {
    proxy_pass http://app:8080;
    }
    }

    参数说明:

    • listen 80:监听 80 端口。
    • access_log off:关闭日志。
    • proxy_pass [http://app:8080](http://app:8080):反向代理的地址
      • 如果要访问 80 端口,那么 nginx 的反向代理会直接去 [http://app:8080](http://app:8080)这个地方
      • 此处的 app 为上面 docker-compose.yml 文件中的 image.png
  • 在~/docker-compose 目录下 使用docker-compose 启动容器
  • docker-compose up
    
  • 测试访问
  • http://你云服务器ip/hello
    

    新手入门  6. Docker 服务编排-每日运维
    若要停止容器:

    docker-compose down
    

    三、扩展

    以下使用 ubuntu18.04 操作系统

    修改 IP 和 DNS

    有时候演示代码会采用多虚拟机模拟分布式场景,为了防止 IP 冲突、无法联网等问题,需要预先设置号主机名、IP、DNS配置

    修改主机名

    • 修改 cloud.cfg防止重启后主机名还原
    vi /etc/cloud/cloud.cfg
    # 该配置默认为 false,修改为 true 即可
    preserve_hostname: true
    • 修改主机名
    # 修改主机名
    hostnamectl set-hostname deployment # 修改主机名为 deployment
    # 配置 hosts
    cat >> /etc/hosts