Docker服务编排

1 服务编排概念

  • 微服务架构的应用系统中一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,维护的工作量会很大。

    • 要从Docker build image 或者去 Docker Hub拉取image。
    • 要创建多个container。
    • 要管理这些container(启动、停止、删除等)。
  • 服务编排:按照一定的业务规则批量管理容器。

2 Docker Compose概念

  • Docker Compose是一个编排多容器分布式部署的工具,提供命令管理容器化应用的完整开发周期,包括服务创建构建、启动和停止。
  • 使用步骤如下:
    • ①利用Dockerfile定义运行环境镜像。
    • ②使用docker-compose.yml定义组成应用的各个服务。
    • ③运行docker-compose up启动应用。

Docker Compose概念

3 Docker Compose的安装和卸载

3.1 Docker Compose的安装

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 国内的地址
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod 777 /usr/local/bin/docker-compose
# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看版本信息 
docker-compose -version

3.2 Docker Compose的卸载

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

4 Docker Compose的应用示例

  • 新建一个SpringBoot项目,随便建。
  • 编写Dockerfile文件。
# 指定基础镜像,在其上进行定制
FROM java:8
#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层
VOLUME /tmp
# 指定在创建容器后,终端默认登陆进来的工作目录,一个落脚点
WORKDIR /
#复制上下文目录下的/target/demo-1.0.jar到容器里,并将文件名称修改为demo.jar
ADD /target/demo-1.0.jar demo.jar
#bash方式执行,使robot.jar可访问
#RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /demo.jar"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8080
#指定容器启动程序及参数   <ENTRYPOINT> "<CMD>"tail
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
  • 使用docker build构建镜像。
docker build -t demo
  • 新建/var/nginx/nginx.conf.d目录,并新建nginx.conf配置文件:
server {
        listen       80;
        server_name  192.168.64.100;

        location / {
            proxy_pass http://app:8080/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

  • 编写docker-compose.yml。
version: '3'
services:
  nginx:
    image: nginx
    ports:
      - "80:80"
    links:
      - app
    volumes:
      - "/var/nginx/nginx.conf.d:/etc/nginx/conf.d"
  app:
    image: demo
  • 使用如下命令启动:
docker-compose up -d
原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/13660344.html