Docker服務(wù)編排

服務(wù)編排概念

  • 微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)中一般包含若干個(gè)微服務(wù),每個(gè)微服務(wù)一般都會(huì)部署多個(gè)實(shí)例,如果每個(gè)微服務(wù)都要手動(dòng)啟停,維護(hù)的工作量會(huì)很大。

    • 要從Docker build image 或者去 Docker Hub拉取image。
    • 要?jiǎng)?chuàng)建多個(gè)container。
    • 要管理這些container(啟動(dòng)、停止、刪除等)。
  • 服務(wù)編排:按照一定的業(yè)務(wù)規(guī)則批量管理容器。

Docker Compose概念

  • Docker Compose是一個(gè)編排多容器分布式部署的工具,提供命令管理容器化應(yīng)用的完整開發(fā)周期,包括服務(wù)創(chuàng)建構(gòu)建、啟動(dòng)和停止。
  • 使用步驟如下:
    • ①利用Dockerfile定義運(yùn)行環(huán)境鏡像。
    • ②使用docker-compose.yml定義組成應(yīng)用的各個(gè)服務(wù)。
    • ③運(yùn)行docker-compose up啟動(dòng)應(yīng)用。
Docker Compose概念

Docker Compose的安裝和卸載

Docker Compose的安裝

# Compose目前已經(jīng)完全支持Linux、Mac OS和Windows,在我們安裝Compose之前,需要先安裝Docker。下面我 們以編譯好的二進(jìn)制包方式安裝在Linux系統(tǒng)中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 設(shè)置文件可執(zhí)行權(quán)限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

Docker Compose的卸載

# 二進(jìn)制包方式安裝的,刪除二進(jìn)制文件即可
rm /usr/local/bin/docker-compose

Docker Compose的應(yīng)用示例

  • 新建一個(gè)SpringBoot項(xiàng)目,隨便建。
  • 編寫Dockerfile文件。
# 指定基礎(chǔ)鏡像,在其上進(jìn)行定制
FROM java:8
#這里的 /tmp 目錄就會(huì)在運(yùn)行時(shí)自動(dòng)掛載為匿名卷,任何向 /tmp 中寫入的信息都不會(huì)記錄進(jìn)容器存儲(chǔ)層
VOLUME /tmp
# 指定在創(chuàng)建容器后,終端默認(rèn)登陸進(jìn)來(lái)的工作目錄,一個(gè)落腳點(diǎn)
WORKDIR /
#復(fù)制上下文目錄下的/target/demo-1.0.jar到容器里,并將文件名稱修改為demo.jar
ADD /target/demo-1.0.jar demo.jar
#bash方式執(zhí)行,使robot.jar可訪問
#RUN新建立一層,在其上執(zhí)行這些命令,執(zhí)行結(jié)束后, commit 這一層的修改,構(gòu)成新的鏡像。
RUN bash -c "touch /demo.jar"
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
#聲明運(yùn)行時(shí)容器提供服務(wù)端口,這只是一個(gè)聲明,在運(yùn)行時(shí)并不會(huì)因?yàn)檫@個(gè)聲明應(yīng)用就會(huì)開啟這個(gè)端口的服務(wù)
EXPOSE 8080
#指定容器啟動(dòng)程序及參數(shù)   <ENTRYPOINT> "<CMD>"tail
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-Djava.security.egd=file:/dev/./urandom","-jar","/demo.jar"]
  • 使用docker build構(gòu)建鏡像。
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
  • 使用如下命令啟動(dòng):
docker-compose up -d
  • 訪問:http://192.168.64.100。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容