docker-compose

Docker-Compose簡介

  • Docker-Compose項目是Docker官方的開源項目,負責實現對Docker容器集羣的快速編排, 並且提供了 scale (服務擴容) 的功能。

  • Docker-Compose將所管理的容器分爲三層,分別是工程(project),服務(service)以及容器(container)。Docker-Compose運行目錄下的所有文件(docker-compose.yml,extends文件或環境變量文件等)組成一個工程,若無特殊指定工程名即爲當前目錄名。一個工程當中可包含多個服務,每個服務中定義了容器運行的鏡像,參數,依賴。一個服務當中可包括多個容器實例,Docker-Compose並沒有解決負載均衡的問題,因此需要藉助其它工具實現服務發現及負載均衡。

  • Docker-Compose的工程配置文件默認爲docker-compose.yml,可通過環境變量COMPOSE_FILE或-f參數自定義配置文件,其定義了多個有依賴關係的服務及每個服務運行的容器。

  • 使用一個Dockerfile模板文件,可以讓用戶很方便的定義一個單獨的應用容器。在工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個Web項目,除了Web服務容器本身,往往還需要再加上後端的數據庫服務容器,甚至還包括負載均衡容器等。

  • Compose允許用戶通過一個單獨的docker-compose.yml模板文件(YAML 格式)來定義一組相關聯的應用容器爲一個項目(project)。

  • Docker-Compose項目由Python編寫,調用Docker服務提供的API來對容器進行管理。因此,只要所操作的平臺支持Docker API,就可以在其上利用Compose來進行編排管理。

假如,你有一個java鏡像,一個mysql鏡像,一個nginx鏡像。如果沒有docker-compose,那麼每次啓動的時候,你需要敲各個容器的啓動參數,環境變量,容器命名,指定不同容器的鏈接參數等等一系列的操作,相當繁瑣。而用了docker-composer之後,你就可以把這些命令一次性寫在docker-composer.yml文件中,以後每次啓動這一整個環境(含3個容器)的時候,你只要敲一個docker-composer up命令就ok了。

先簡單理解 docker 的使用過程,它分爲鏡像構建與容器啓動。

  1. 鏡像構建:即創建一個鏡像,它包含安裝運行所需的環境、程序代碼等。這個創建過程就是使用 dockerfile 來完成的。

  2. 容器啓動:容器最終運行起來是通過拉取構建好的鏡像,通過一系列運行指令(如端口映射、外部數據掛載、環境變量等)來啓動服務的。針對單個容器,這可以通過 docker run 來運行。

而如果涉及多個容器的運行(如服務編排)就可以通過docker-compose來實現,它可以輕鬆的將多個容器作爲 service 來運行(當然也可僅運行其中的某個),並且提供了 scale (服務擴容) 的功能。

簡單總結:

dockerfile: 構建鏡像;

docker run: 啓動容器;

docker-compose: 啓動服務;

安裝

推薦官方安裝

curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

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

[root@rancher ~]# docker-compose -v

docker-compose version 1.24.1, build 4667896b

卸載


如果是二進制包方式安裝的,刪除二進制文件即可:

sudo rm /usr/local/bin/docker-compose


如果通過Python pip工具安裝的,則執行如下命令刪除:

sudo pip uninstall docker-compose


常用命令

-f,–file FILE指定Compose模板文件,默認爲docker-compose.yml,可以多次指定。

-p, 指定docker-compose的項目目錄,也就是docker-compose.yml文件的存儲目錄

-v,–version打印版本並退出

docker-compose ps      顯示所有容器

docker-compose up -d nginx   構建並在後臺啓動nginx容器,不加nginx,啓動所有服務,下面的等同。

docker-compose run    允許爲你的應用程序運行一次性命令

docker-compose start nginx   啓動nginx容器

docker-compose restart nginx   重啓nginx容器 (注意是編排文件中的service)

docker-compose stop  nginx  停止nginx容器

docker-compose pause nginx    暫停nginx容器

docker-compose unpause nginx    恢復nginx容器

docker-compose kill nginx    強制停止nginx容器

docker-compose rm nginx    刪除nginx容器(刪除前必須關閉容器)

docker-compose exec nginx bash            登錄到nginx容器中

docker-compose down -v   停止並刪除容器、網絡、映像和卷,-v(--volumes)刪除容器的數據卷

docker-compose logs -f  --tail 50 nginx    查看nginx的實時日誌,只看最後50行。

docker-compose events --json nginx      以json的形式輸出nginx的docker日誌

docker-compose config  -q    驗證(docker-compose.yml)文件配置,當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息。

docker-compose build nginx        構建鏡像

docker-compose build --no-cache nginx   不帶緩存的構建。

docker-compose scale     設置服務的容器數量

docker-compose pull     拉取服務鏡像

docker-compose push    推送服務鏡像

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章