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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM