Docker Compose之容器編排開發初探
1、前言
-
Docker Compose 是 Docker 官方編排(Orchestration)專案之一,負責快速在叢集中部署分散式應用。
-
Compose 是一個用於定義和執行多個 Docker 應用程式的工具。使用 Compose,您可以使用 YAML 檔案來配置應用程式。然後,使用一個命令,您可以從您的配置中建立並啟動所有服務。
-
Dockerfile 可以讓使用者管理一個單獨的應用容器;而 Compose 則允許使用者在一個模板(YAML 格式)中定義一組相關聯的應用容器(被稱為一個 project,即專案),例如一個 Web 服務容器再加上後端的資料庫服務容器等。
首先介紹幾個術語
-
服務(service):一個應用容器,實際上可以執行多個相同映象的例項。
-
專案(project):由一組關聯的應用容器組成的一個完整業務單元。
可見,一個專案可以由多個服務(容器)關聯而成,Compose 面向專案進行管理。
2、安裝
:point_right: 官方文件在 這裡
我才用 curl
方式為所有使用者安裝。(也可以用 apt-get
方式,具體參考 文件 )
# 下載 Docker Compose 的當前穩定版本(安裝給所有伺服器使用者:/usr/local/bin) sudo curl -L "http://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
網路
[[email protected] ~]# :point_right::point_right:docker network ls:point_left::point_left: 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 [[email protected] ~]# :point_right::point_right:docker network inspect 3fa1e11e2050:point_left::point_left: [ { "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" } } ] [[email protected] ~]#
7、docker-compose 啟動容器常見問題
7.1、映象更新之後容器服務沒有更新
可以通過 docker inspect containerName 檢視容器資訊
啟停容器並不會拉取最新映象
docker-compose up -d 或者 docker-compose up -d 服務名
本篇完:tada::tada::tada:,後面接著分享 docker-compose 1分鐘搭建WordPress
,有興趣的話,麻煩看官點個贊,支援一下,謝謝啦:blush:
:balloon::balloon::balloon:
:rose: 持續更文,關注我,你會發現一個踏實努力的寶藏前端:blush:,讓我們一起學習,共同成長吧。
:tada: 喜歡的小夥伴記得點贊關注收藏喲,回看不迷路 :wink:
:gift: 歡迎大家評論交流, 蟹蟹:blush:
- 記一次批量更新整型型別的列 → 探究 UPDATE 的使用細節
- 編碼中的Adapter,不僅是一種設計模式,更是一種架構理念與解決方案
- 執行緒池底層原理詳解與原始碼分析
- 30分鐘掌握 Webpack
- 線性迴歸大結局(嶺(Ridge)、 Lasso迴歸原理、公式推導),你想要的這裡都有
- Django 之路由層
- 【前端必會】webpack loader 到底是什麼
- day42-反射01
- 中心化決議管理——雲端分析
- HashMap底層原理及jdk1.8原始碼解讀
- 詳解JS中 call 方法的實現
- 列印 Logger 日誌時,需不需要再封裝一下工具類?
- 初識設計模式 - 代理模式
- 設計模式---享元模式
- 密碼學奇妙之旅、01 CFB密文反饋模式、AES標準、Golang程式碼
- [ML從入門到入門] 支援向量機:從SVM的推導過程到SMO的收斂性討論
- 從應用訪問Pod元資料-DownwardApi的應用
- Springboot之 Mybatis 多資料來源實現
- Java 泛型程式設計
- CAS核心思想、底層實現