Docker Compose之容器編排開發初探
- 2022 年 8 月 10 日
- 筆記
- DevOps, docker, Docker Compose
1、前言
-
Docker Compose 是 Docker 官方編排(Orchestration)項目之一,負責快速在集群中部署分散式應用。
-
Compose 是一個用於定義和運行多個 Docker 應用程式的工具。使用 Compose,您可以使用 YAML 文件來配置應用程式。然後,使用一個命令,您可以從您的配置中創建並啟動所有服務。
-
Dockerfile 可以讓用戶管理一個單獨的應用容器;而 Compose 則允許用戶在一個模板(YAML 格式)中定義一組相關聯的應用容器(被稱為一個 project,即項目),例如一個 Web 服務容器再加上後端的資料庫服務容器等。
首先介紹幾個術語
-
服務(service):一個應用容器,實際上可以運行多個相同鏡像的實例。
-
項目(project):由一組關聯的應用容器組成的一個完整業務單元。
可見,一個項目可以由多個服務(容器)關聯而成,Compose 面向項目進行管理。
2、安裝
👉 官方文檔在這裡
我才用 curl
方式為所有用戶安裝。(也可以用 apt-get
方式,具體參考文檔)
# 下載 Docker Compose 的當前穩定版本(安裝給所有伺服器用戶:/usr/local/bin)
sudo curl -L "//github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 查看是否安裝成功
docker-compose -h
docker-compose --version # docker-compose version 1.29.2, build 5becea4c
# 對二進位文件應用可執行許可權
chmod +x /usr/local/bin/docker-compose
3、卸載
通過 curl
安裝 Compose CLI 插件,使用下面命令卸載
rm /usr/local/bin/docker-compose
4、常用命令
docker-compose up # 啟動
docker-compose up -d # 後台啟動
# 停止應用程式,方法是docker-compose down 在第二個終端的項目目錄中運行,或者在啟動應用程式的原始終端中按 CTRL+C。
docker-compose down / CTRL + C
docker-compose stop
# 使用以下down 命令關閉所有內容,完全刪除容器。傳遞--volumes給 Redis 容器使用的數據卷
docker-compose down --volumes
5、官網示例啟動效果
示例配置在這裡
- 啟動日誌
- 查看鏡像
- 瀏覽器運行效果
說明:
# 默認命名規則
# 默認的服務名: 文件名_服務名_num
# _num 代表副本,多個伺服器,集群,高可用,高並發,負載均衡
composetest_redis_1
composetest_web_1
docker service ls
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
6、docker-compose網路
通過docker-compose啟動的項目(包含多個服務),都在同一個網路下,可以通過服務名字訪問
- 查看
docker-compose
網路
[root@--- ~]# 👉👉docker network ls👈👈
NETWORK ID NAME DRIVER SCOPE
8d10d0e8db5e bridge bridge local
3fa1e11e2050 composetest_default bridge local # docker-compose生成的
e8bf4fced9e2 host host local
0096a971fd2c mynet bridge local
6263db0933b9 none null local
0350d84612be redis bridge local
799426d70aa2 test-network bridge local
c143092e025f todo-app bridge local
[root@--- ~]# 👉👉docker network inspect 3fa1e11e2050👈👈
[
{
"Name": "composetest_default",
"Id": "3fa1e11e2050b81eb69691487789dd545d6ce3c36e686035c0a49db54f86b2f7",
"Created": "2021-10-10T15:46:29.084459645+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.21.0.0/16",
"Gateway": "172.21.0.1"
}
]
},
"Internal": false,
"Attachable": true,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"57876e08abc657e884e2f527d930e0ffc34d632928d38ae2e29efa03c91b1980": {
"Name": "composetest_redis_1",
"EndpointID": "b1803007038c048525602a20da0c2aac73f8a87741ce127e84f89084fd2b75f0",
"MacAddress": "02:42:ac:15:00:03",
"IPv4Address": "172.21.0.3/16",
"IPv6Address": ""
},
"994a3c48416ace662a09b1179a695ee63c9a3c33fccefbb0886374260fcd6aab": {
"Name": "composetest_web_1",
"EndpointID": "cd7e479a22bd251c87214e27d033af3a1bf4164664457e9ceb8cf32f690cded7",
"MacAddress": "02:42:ac:15:00:02",
"IPv4Address": "172.21.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {
"com.docker.compose.network": "default",
"com.docker.compose.project": "composetest",
"com.docker.compose.version": "1.29.2"
}
}
]
[root@--- ~]#
7、docker-compose 啟動容器常見問題
7.1、鏡像更新之後容器服務沒有更新
可以通過 docker inspect containerName 查看容器資訊
啟停容器並不會拉取最新鏡像
docker-compose up -d
或者
docker-compose up -d 服務名
本篇完🎉🎉🎉,後面接著分享 docker-compose 1分鐘搭建WordPress
,有興趣的話,麻煩看官點個贊,支援一下,謝謝啦😊
🎈🎈🎈
🌹 持續更文,關注我,你會發現一個踏實努力的寶藏前端😊,讓我們一起學習,共同成長吧。
🎉 喜歡的小夥伴記得點贊關注收藏喲,回看不迷路 😉
🎁 歡迎大家評論交流, 蟹蟹😊