“寒江孤影,江湖故人”。
在Docker走馬江湖的青蔥歲月里,面對云時代的巍然大勢下,Docker曾也浪跡江湖,執三劍以掃天下,飲馬江湖,仗劍天涯。今朝聲名已著,江湖時傳,三劍客也。
Docker三劍客之Docker-Machine
DockerMachine:docker-machine就是docker公司官方提出的用于在各種平臺上快速創建具有docker服務的技術,主要是解決docker運行環境問題。
Docker三劍客之Docker-Compose
Docker-compose:是用來定義和運行多容器應用的工具,主要是解決本地docker容器編排問題。
Docker三劍客之Docker-Swarm
DockerSwarm:是Docker社區原生提供的容器集群管理工具,是解決多主機多個容器調度部署的問題。
在docker后續的發展浪潮中,docker-machine的能力范圍主要用于處理陳舊系統的中docker部署及遠程系統上配置docker的需求。docker-compose作為docker的一項開源項目獨立維護。而docker-swarm被docker吸收嵌入到dockerengine中成為docker的子命令。本文僅以docker-compose為出發點,詳細分析下其功能作用和配置特點。
Compose是用于定義和運行多容器Docker應用程序的工具。通過Compose,您可以使用YAML文件來配置應用程序的服務。然后,使用一個命令,就可以從配置中創建并啟動所有服務。
Compose通過一個配置文件來管理多個Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器,非常適合組合使用多個容器進行開發的場景。
使用compose基本上是一個三步過程:
1.用dockerfile,或者鏡像定義應用程序的環境,以便在任何地方復制。
2.在docker-compose.yml中定義組成應用程序的服務,以便它們可以在多帶帶的環境中一起運行。
3.運行dockercompose up啟動并運行整個應用程序。
docker-compose將所管理的容器分為3層結構:Project 、Service 、Container。docker-compose.yml組成一個project,project中包括多個service,每個service定義了容器運行的鏡像(或構建鏡像),網絡端口,文件掛載,參數,依賴等,每個service又可以包括同一個鏡像的多個容器實例。
因為docker-compose的運行還是依賴docker容器的,故docker也是事先部署好的;另外還要注意的是,docker-compose的運行版本也是需要和本地運行的dockerengine的版本是統一的。
Docker安裝
$ sudo yum install -y yum-utils
$ sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
配置dockeryum源:
$ sudo yum install docker-ce docker-ce-cli containerd.io
安裝最新版dockerengine:
安裝指定版本的dockerengine:
注:文件演示docker安裝版本:Dockerversion 18.09.0, build 4d60db4
Docker-compose安裝:
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
$ sudo yum install docker-ce-
docker-ce-cli-
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/
docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
注意:要安裝其他版本的Compose,請替換1.26.2 為要使用的Compose版本。另外github網絡連接不好的情況可能下載失敗,可以去github上直接下載上傳到本地服務器。文中docker-compose安裝版本:docker-composeversion 1.18.0, build 8dd22a9
本次示例采用的是wordpress+mysql部署一個博客項目:
Docker-compose.yml文件配置內容如下:
version: 3.1 services: wordpress: image: wordpress restart: always ports: - 8080:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_USER: wp WORDPRESS_DB_PASSWORD: 123456 WORDPRESS_DB_NAME: wordpress volumes: - wordpress:/var/www/html db: image: mysql:5.7 restart: always environment: MYSQL_DATABASE: wordpress MYSQL_USER: wp MYSQL_PASSWORD: 123456 MYSQL_RANDOM_ROOT_PASSWORD: 1 volumes: - db:/var/lib/mysql volumes: wordpress: db: |
Docker-compose啟動wordpress博客項目,這里統稱上述yml文件中描述的服務都是來完成博客項目的,其中service有兩個:wordpress服務和MySQL服務。
至此我們使用docker-compose來啟動該項目:
#進入docker-compose.yml文件所在目錄執行命令
$ sudo docker-compose up -d
#或者啟動docker-compose.yml文件來啟動
$ sudo docker-compose -f /yml_dir/docker-compose.yml up -d
查看容器啟動情況:
]# docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
wordpress_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Wordpress頁面配置展示效果:
從演示的結果來看,docker-compose確實完成了我們期望的工作,在一次部署中完成對項目中所有服務的構建管控。從服務器環境上來說,compose使用項目名稱的方式將環境相互隔離;并且支持環境變量,方便用戶使用這些變量應用在不用的環境中,用戶自定義設置變量等方面。從應用上看過了compose的功能特點,接下來我們看看從yml文件配置中看看docker-compose都完成了什么。
version:指定docker-compose.yml文件的寫法格式
version: 3.1
services:多個服務集合,例如文件中wordpress和db都是服務:
services:
wordpress:
db:
image:指定服務所使用的鏡像:
version: 3.1
services:
wordpress:
image: wordpress
restart:always :配置重啟,docker每次啟動時會啟動該服務
restart:always
ports:定義宿主機端口和容器端口的映射,可使用宿主機IP+宿主機端口進行訪問宿主機端口:容器端口
environment:環境變量配置,可以用數組或字典兩種方式
volumes:卷掛載路徑,定義宿主機的目錄/文件和容器的目錄/文件的映射 宿主機
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db #此項配置引用 服務 db的名稱,
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: 123456
WORDPRESS_DB_NAME: wordpress
volumes:#此處wordpress為數據卷
- wordpress:/var/www/html
路徑:容器路徑
docker-composepull:拉取服務里定義的鏡像
docker-composeps :列出project所有運行容器(容器名= 目錄名_service_index index表示容器序數,從1開始)
docker-composebuild:構建/重新構建所有鏡像
docker-composestart [serviceName]:啟動已存在但停止的所有service;
(可選)[serviceName]:表示啟動某一個service
docker-composeup -d(相當于build + start ):構建(容器)并啟動(容器)整個project的所有service
-d:后臺進程
--scale:指定服務運行的容器個數
docker-composestop [serviceName]:停止運行的service
(可選)[serviceName]:表示停止某一個service
docker-composerm -f [serviceName]:刪除已停止的所有service
(可選)[serviceName]:表示刪除已停止某一個service
-f :刪除不在詢問
docker-composedown -v(相當于stop + rm):停止并移除整個project的所有services
-v:刪除掛載卷和volunme的鏈接
docker-composelogs [serviceName]:查看服務內所有容器日志輸出
(可選)[serviceName]:表示輸出某一個service的日志
-f:實時輸出日志
docker-composerun [serviceName] command:在某個服務上運行命令
eg:docker-compose run web ping www.baidu.com
docker-composeexec [serviceName] sh:進入到某個容器
--index:2 :當服務內有多個容器時,需要指定第幾個,默認是第一個
eg:docker-composeexec --index=2 web sh
docker-composerestart [serviceName] : 重啟服務
docker-composeconfig:驗證和查看compose文件
docker-compose images:列出所用的鏡像
docker-cpmposescale:設置服務個數Eg:docker-compose scale web=2 worker=3
docker-composepause [serviceName]:暫停服務
docker-composeunpause [serviceName]:恢復服務
通過本次演練完整了體現了docker-compose在單臺主機上運行多個獨立環境的能力及環境變量設置等有力手段,其實compose在對數據卷的使用及只重新創建改變的容器方式也極大的提高了compose的使用便利性。但局限性也很明顯就是單臺服務器上部署,無法保證高可用性,故而在越來越多的集群方式的環境下,使用場景也變的單一。所以在后續的使用中,要切合場景要求,一切以現場實際為出發點,提出有效正確的方案。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/130141.html
摘要:常用服務配置一些基礎服務的配置文件,方便在一臺新電腦上快速開始工作不必輸入一長串命令來啟動對應服務,并且可以做到持久化。 docker-compose 常用服務配置 一些基礎服務的docker-compose配置文件,方便在一臺新電腦上快速開始工作 不必輸入一長串docker命令來啟動對應服務,并且可以做到持久化。 代碼托管在 https://github.com/shiguanghu...
摘要:我創建了一個名為的項目。錯誤信息查看在后臺找到我們的項目,點擊進去就能看到多了一條錯誤信息。它由以下幾部分組成,分別是協議公鑰私鑰主機路徑一般為空項目。 sentry簡介 Sentry 是一個開源的錯誤追蹤工具,可以幫助開發人員實時監控和修復系統中的錯誤。其專注于錯誤監控以及提取一切事后處理所需的信息;支持幾乎所有主流開發語言(JS/Java/Python/php)和平臺, 并提供了w...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20