七、Docker-Compose簡介和安裝


使用現有的docker進行部署存在問題

我們之前在Docker容器中安裝了nginx、mysql、es、redis等等一些容器,然后每次我需要先啟動redis、mysql、es、nginx之后才能啟動我們的項目,因為容器之間可能存在某種依賴,需要按一定的順序啟動,比如Kibana容器依賴於es容器,es容器需要先啟動。當容器啟動完畢我們才能運行起來項目。如果容器數量特別多的話啟動更加麻煩。

假如需要將這些服務部署到另一個服務器,但是不知道到底用到了Docker里面具體的哪一些容器,沒有辦法只能把容器全部復制過去,沒法對一個項目的容器進行管理。

Docker-Compose簡介

Compose項目是Docker官方的開源項目。負責實現對Docker容器集群的快速編排,對多個容器進行編排,將一組相關聯的容器放在一起,可以理解為它將你項目用到的所有容器按照你指定的啟動順序設置成一個文件,然后一次就可以啟動。

與Dockerfile不同的是,Dockerfile模版文件是讓用戶定義一個單獨運行的容器,而Compose是多個容器相互配合完成某一個任務的情況。比如要實現一個Web項目,里面除了Web容器本身之外還有數據庫、負載均衡容器等等。

定義方式

允許用戶通過一個單獨的docker-compose.yml模版文件來定義一組相關聯的應用容器為一個項目。

里面有兩個重要概念:

  • 項目:一組相關聯的應用容器組成的一個完整的業務單元。可以理解為你項目中的多個容器組成了一個項目
  • 服務:一個應用容器里面可以包含若干運行相同鏡像的容器實例。可以理解項目中的每一個容器都稱之為服務,多個容器就是多個服務,只是這里面的叫法名稱變了而已。

只要操作平台支持Docker就可以用Compose來進行編排管理。

安裝卸載

1、登入官方地址下載指定版本,官方地址為:https://github.com/docker/compose/releases

image-20220101163821328

下載完之后上傳到服務器的/usr/local/bin目錄下

給它一個執行權限

sudo chmod +x /usr/local/bin/docker-compose

image-20220101164251272

2、直接從服務器下載

curl -L https://github.com/docker/compose/releases/download/2.2.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

后續步驟同上

docker-compose -v  #查看是否安裝成功

image-20220101183815895

案例

1、創建一個目錄

mkdir ems

2、在ems目錄創建一個docker-compose.yml 模版文件

3、編寫docker-compose.yml

#docker-compose項目版本號
version: "3.8"

services:
  centos01:                #自定義的服務的名稱 
     image: tomcat:latest   #代表使用哪一個鏡像 latest表示版本號
     ports:       #代表主機和容器中的端口映射  
     - 8082:8080

version:docker-compose和docker版本對應,先查看docker版本

image-20220101183448489

docker版本20.10.+,所以對應docker-compose的3.8版本

image-20220101183527821

4、啟動docker-compose一組服務

docker-compose up

image-20220101210438735

表示啟動成功

5、還可以在里面繼續增加容器redis,指定

#docker-compose項目版本號
version: "3.8"

services:
  centos01:                #自定義的服務的名稱
     image: tomcat:latest   #代表使用哪一個鏡像
     ports:       #代表主機和容器中的端口映射  
     - 8082:8080
  redis01:
    image: redis:latest  #指定了redis的鏡像 
    ports:
    - 6379:6379

image-20220101211608412

兩個都啟動成功

更多配置

environment:代表給當前容器啟動指定環境,類似於docker run -e MYSQL_ROOT_PASSWORD=root

Volumes:代表給當前容器和主機指定數據卷,類似於 docker run -v 注意 這里數據卷的路徑必須先創建

#docker-compose項目版本號
version: "3.8"

services:
  centos01:                #自定義的服務的名稱
     image: tomcat:latest   #代表使用哪一個鏡像
     ports:       #代表主機和容器中的端口映射  
     - 8082:8080
  redis01:
    image: redis:latest
    ports:
    - 6379:6379
  mysql01:
    image: mysql:latest
    ports:
   - 3306:3306
   environment:  
   - "MYSQL_ROOT_PASSWORD=root"
   volumes:
    - /root/mysqldata:/var/lib/mysql 

啟動之后服務運行狀態

image-20220101220423618

這里的Names是自動取的別名,可以在里面增加container_name給容器指定別名

以及mysql掛載的數據卷都有顯示

image-20220101220051422


免責聲明!

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



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