DockerCompose
可以基于Compose
文件幫我們快速的部署分布式應用,不需要我們手動一個個創(chuàng)建和運行容器。
Compose
文件是一個文本文件,通過指令定義集群中的每個容器如何運行。
# Compose 文件格式有3個版本,分別為1, 2.x 和 3.x
# 目前主流的為 3.x 其支持 docker 1.13.0 及其以上的版本
version: "3.0" # 當前DockerCompose文件版本
services: # 具體的服務定義
mysql: # mysql的配置,啟動的容器命名為mysql
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
javaapp: # 某個java工程的配置(啟動的容器命名為javaapp)
build: .
ports:
- "8999:8999"
1.2.2 常見格式配置–從已有鏡像創(chuàng)建并運行容器把上面mysql的配置和啟動mysql鏡像運行命令比較:
# mysql 鏡像啟動命令
docker run \ # 創(chuàng)建并運行一個容器
--name mysql \ # 給容器個名字叫mysql
-e MYSQL_ROOT_PASSWORD=root \ # 設置mysql登錄,密碼為root
-p 3306:3306 # 把宿主機3306端口和容器的3306端口相關(guān)聯(lián)
-v /mysql/conf/myLocal.cnf:/etc/mysql/conf.d \ # 宿主myLocal.cnf文件掛載到容器conf.d文件
-v /mysql/data:/var/lib/musql \ # 宿主data目錄掛載到容器mysql目錄
-d \ # 后臺運行
mysql:5.7.25 # 需要啟動的鏡像名稱
Compose
文件中的mysql
相當于--name mysql
image: mysql:5.7.25
就相當于運行命令中對鏡像名稱的指定environment
相當于-e
Compose
文件中沒有配置-p
端口映射,是因為微服務中的mysql
只需要給微服務內(nèi)部使用,無需暴露。volumes
相當于-v
Compose
文件中沒有和運行命令-d
后臺運行的配置,因為默認就是后臺運行,無需配置。mysql
鏡像運行命令其實和Compose
中的指令是可以做到一一對一關(guān)系的。
這不就是把鏡像運行命令寫到了Compose
文件當中嗎。
這是Compose
文件中典型的從已有鏡像創(chuàng)建并運行容器的配置寫法。
把上面javaapp的配置和把java工程構(gòu)建成鏡像并運行命令比較:
# 基于Dockerfike構(gòu)建鏡像
docker build -t javaapp:1.0 .
# 運行上面構(gòu)建的鏡像
docker run --name javaapp -p 8999:8999 -d javaapp:1.0
Compose
文件中javaapp
就相當于構(gòu)建命令和運行命令中的javaapp
Compose
文件中build
就相當于構(gòu)建命令中的docker build
Compose
文件中.
就相當于構(gòu)建命令中的.
,都代表當前目錄下構(gòu)建鏡像Compose
文件中- "8999:8999"
相當于運行命令中的-p 8999:8999
,把宿主機端口和容器端口相關(guān)聯(lián)Compose
文件中沒有和運行命令-d
后臺運行的配置,因為默認就是后臺運行,無需配置。Compose
文件中沒有配置java
工程的鏡像名稱,因為就是直接運行構(gòu)建出來的鏡像,已經(jīng)能唯一確定了其實DockerCompose
就是把鏡像構(gòu)建和鏡像運行等命令,轉(zhuǎn)換成指令封裝到Compose
文件當中。
上面命令和指令的對應關(guān)系記不住也沒關(guān)系。
配置的時候可以查看官方文檔:
https://docs.docker.com/compose/compose-file/
文檔里各種配置都寫的一清二楚。
1.3 DockerCompose部署命令部署前需要先進入需要部署的微服務的目錄下執(zhí)行:
# up 就是啟動
# -d 代表后臺運行
# 整體就是按docker-compose.yml中配置的信息去部署微服務
docker-compose up -d
二、DockerCompose的安裝訪問DockerCompose在github上的發(fā)布版本
此時最新版是2.10.2
, 就以它為例。
docker-compose
二進制文件#命令解釋:
# 從https://github.com/docker/compose/releases/download/2.10.2/docker-compose拉取二進制文件
# 拉取的文件所放的位置為/usr/local/bin/ 并重命名為docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose
# 上面安裝出問題就安裝下面的
curl -L https://get.daocloud.io/docker/compose/releases/download/v2.10.2/docker-compose-`uname -s`-`uname -m` >/usr/local/bin/docker-compose
1.1.2 先從github上拉取文件到本地,再上傳到Linux
點擊2.10.2
版本下的docker-compose-linux-x86_64
下載文件。
把文件docker-compose-linux-x86_64
重命名文件為docker-compose
。
重命名完成后使用finallshell
把文件上傳到Linux
的/usr/local/bin/
目錄下。
chmod +x /usr/local/bin/docker-compose
1.3 授予權(quán)限之后查看docker-compose版本docker-compose version
1.4 設置docker-compose命令自動補全能正常顯示版本號之后。發(fā)現(xiàn)打docker-compose
命令的時候,按tab
鍵并不能幫我們補全命令。
如果使用docker-compose
一鍵部署集群的話,這個命令是非常常用的。沒有提示很不方便。
因此可以執(zhí)行下面命令,讓docker-compose
命令也可以被Linux
自動提示。
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose >/etc/bash_completion.d/docker-compose
如果執(zhí)行命令一直卡著下載不下來,是因為解析不了域名raw.githubusercontent.com
只需要在當前服務器的host
文件中追加一句ip
和域名的映射關(guān)系即可
echo "199.232.68.133 raw.githubusercontent.com">>/etc/hosts
三、DockerCompose的卸載DockerCompose
的卸載非常簡單,只需要刪除docker-compose
的二進制文件就行了。
就是當初我們上傳上來的那個docker-compose
沒有后綴的文件。
cd /usr/local/bin/
3.2 刪除docker-compose文件rm -rf /usr/local/bin/docker-compose
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧