您好,登錄后才能下訂單哦!
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 的使用過程,它分為鏡像構建與容器啟動。
鏡像構建:即創建一個鏡像,它包含安裝運行所需的環境、程序代碼等。這個創建過程就是使用 dockerfile 來完成的。
容器啟動:容器最終運行起來是通過拉取構建好的鏡像,通過一系列運行指令(如端口映射、外部數據掛載、環境變量等)來啟動服務的。針對單個容器,這可以通過 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? ? 推送服務鏡像
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。