dcoker-componse-2

思考

前面我們使用 Docker 的時候,定義 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器颁独。然而微服務架構(gòu)的應用系統(tǒng)一般包含若干個微服務,每個微服務一般都會部署多個實例,如果每個微服務都要手動啟停,那么效率之低,維護量之大可想而知

使用 Docker Compose 可以輕松、高效的管理容器,它是一個用于定義和運行多容器 Docker 的應用程序工具

什么是Docker Compose

Docker Compose 是 Docker 官方編排(Orchestration)項目之一,負責快速的部署分布式應用抗俄。

Docker Compose 簡介

Compose 項目是 Docker 官方的開源項目,負責實現(xiàn)對 Docker 容器集群的快速編排裹刮。從功能上看,跟 OpenStack 中的 Heat 十分類似盏混。

其代碼目前在 https://github.com/docker/compose 上開源蔚鸥。

Compose 定位是 「定義和運行多個 Docker 容器的應用(Defining and running multi-container Docker applications)」,其前身是開源項目 Fig。

通過第一部分中的介紹,我們知道使用一個 Dockerfile 模板文件,可以讓用戶很方便的定義一個單獨的應用容器许赃。然而,在日常工作中,經(jīng)常會碰到需要多個容器相互配合來完成某項任務的情況止喷。例如要實現(xiàn)一個 Web 項目,除了 Web 服務容器本身,往往還需要再加上后端的數(shù)據(jù)庫服務容器,甚至還包括負載均衡容器等。

Compose 恰好滿足了這樣的需求混聊。它允許用戶通過一個單獨的 docker-compose.yml 模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應用容器為一個項目(project)弹谁。

Compose 中有兩個重要的概念:

服務 (service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。

項目 (project):由一組關(guān)聯(lián)的應用容器組成的一個完整業(yè)務單元,在 docker-compose.yml 文件中定義句喜。

Compose 的默認管理對象是項目,通過子命令對項目中的一組容器進行便捷地生命周期管理预愤。

Compose 項目由 Python 編寫,實現(xiàn)上調(diào)用了 Docker 服務提供的 API 來對容器進行管理。因此,只要所操作的平臺支持 Docker API,就可以在其上利用 Compose 來進行編排管理咳胃。

Docker Compose 安裝與卸載

Compose 支持 Linux植康、macOS、Windows 10 三大平臺展懈。

Compose 可以通過 Python 的包管理工具 pip 進行安裝,也可以直接下載編譯好的二進制文件使用,甚至能夠直接在 Docker 容器中運行销睁。

Docker for Mac 供璧、Docker for Windows 自帶 docker-compose 二進制文件,安裝 Docker 之后可以直接使用。

Linux 系統(tǒng)安裝

二進制安裝(官方推薦)

從 官方 GitHub Release 處直接下載編譯好的二進制文件

Linux 64 位系統(tǒng)上直接下載對應的二進制包

curl -L https://github.com/docker/compose/releases/download/1.24.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

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

卸載:rm /usr/local/bin/docker-compose

可能產(chǎn)生問題:

可以通過嘗試域名解析方式:

ping github-production-release-asset-2e65be.s3.amazonaws.com

得到ip 52.216.101.115

在linux的/etc/hosts上添加上以下一句,問題解決

52.216.101.115 github-production-release-asset-2e65be.s3.amazonaws.com

PIP 安裝(推薦此安裝)

#查看docker compose版本

docker-compose version

#查看pip版本

pip -v

#上一條語句沒有顯示版本信息則運行下面語句安裝 python-pip

yum -y install epel-release

yum -y install python-pip

#查看pip版本

pip -v

#pip進行升級

pip install --upgrade pip

如果不成功,因為源問題,請嘗試更改其它源進行下載(設置yum源)冻记。

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#進行安裝compose 第一條語句報錯執(zhí)行第二條,執(zhí)行成功則跳過第二條

pip install docker-compose

pip install docker-compose --ignore-installed requests

#查看版本

docker-compose -version

默認會安裝到此目錄: /usr/local/bin/docker-compose

卸載

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

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

如果是通過 pip 安裝的,則執(zhí)行如下命令即可刪除睡毒。

sudo pip uninstall docker-compose

Docker Compose 使用

術(shù)語

首先介紹幾個術(shù)語。

服務 (service):一個應用容器,實際上可以運行多個相同鏡像的實例冗栗。

項目 (project):由一組關(guān)聯(lián)的應用容器組成的一個完整業(yè)務單元演顾。

可見,一個項目可以由多個服務(容器)關(guān)聯(lián)而成,Compose 面向項目進行管理。

Docker-compose創(chuàng)建容器

通過一個單獨的 docker-compose.yml 模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應用容器為一個項目(project)贞瞒。

管理文件夾(創(chuàng)建相應目錄)

mkdir -p /usr/local/docker/tomcat

創(chuàng)建一個docker-compose.yml文件

version: '3'

services:

tomcat:

restart: always

image: tomcat

container_name: tomcat_qfjy

ports:

- 8080:8080

編寫 docker-compose.yml 文件,這個是 Compose 使用的主模板文件偶房。

啟動(執(zhí)行命令 創(chuàng)建容器)

docker-compose up -d

默認執(zhí)行的文件名:docker-compose.yml(且需要在當前上下文路徑中) 。如果說文件名不是默認的需要使用下面的指令:

docker-compose -f 文件名.后綴名 up –d

訪問tomcat服務主頁即可

Docker-Compse可以用來定義或運行復雜的容器

docker-compose 常用命令

build 構(gòu)建或重建服務

help 命令幫助

kill 殺掉容器

logs 顯示容器的輸出內(nèi)容

port 打印綁定的開放端口

ps 顯示容器

pull 拉取服務鏡像

restart 重啟服務

rm 刪除停止的容器

run 運行一個一次性命令

scale 設置服務的容器數(shù)目

start 開啟服務

stop 停止服務

up 創(chuàng)建并啟動容器

down

常用命令示例:

docker-compose up -d nginx 構(gòu)建啟動nignx容器

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

docker-compose down 刪除所有nginx容器,鏡像

docker-compose ps 顯示所有容器

docker-compose restart nginx 重新啟動nginx容器

docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不啟動關(guān)聯(lián)容器,并容器執(zhí)行php -v 執(zhí)行完成后刪除容器

docker-compose build nginx 構(gòu)建鏡像 军浆。

docker-compose build --no-cache nginx 不帶緩存的構(gòu)建。

docker-compose logs nginx 查看nginx的日志

docker-compose logs -f nginx 查看nginx的實時日志

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

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

docker-compose pause nginx 暫停nignx容器

docker-compose unpause nginx 恢復ningx容器

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

docker-compose stop nginx 停止nignx容器

docker-compose start nginx 啟動nignx容器

Docker Compose 部署

tomcat

創(chuàng)建項目目錄

mkdir –p /usr/local/docker/qfjy_exam

該當目錄下創(chuàng)建docker-compose.yml

vim docker-compose.yml

Mysql參考:https://www.cnblogs.com/mmry/p/8812599.html

分別查看安裝tomcat和mysql的數(shù)據(jù)卷信息乒融。

version: '3'

services:

tomcat:

restart: always

image: tomcat

container_name: exam_tomcat

ports:

- 8080:8080

volumes:

- /usr/local/docker/qfjy_exam/ROOT:/usr/local/tomcat/webapps/ROOT

mysql

創(chuàng)建項目目錄

mkdir –p /usr/local/docker/mysql

數(shù)據(jù)庫

/var/lib/docker/volumes

version: '3'

services:

mysql:

restart: always

image: mysql:5.6

container_name: mysql5.6

ports:

- 3306:3306

environment:

TZ: Asia/Shanghai

MYSQL_ROOT_PASSWORD: 密碼

volumes:

- mysql-data:/var/lib/mysql

volumes:

mysql-data:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市摄悯,隨后出現(xiàn)的幾起案子赞季,更是在濱河造成了極大的恐慌,老刑警劉巖奢驯,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件申钩,死亡現(xiàn)場離奇詭異,居然都是意外死亡瘪阁,警方通過查閱死者的電腦和手機撒遣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來管跺,“玉大人义黎,你說我怎么就攤上這事』砼埽” “怎么了廉涕?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長艇拍。 經(jīng)常有香客問我狐蜕,道長,這世上最難降的妖魔是什么卸夕? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任层释,我火速辦了婚禮,結(jié)果婚禮上娇哆,老公的妹妹穿的比我還像新娘湃累。我一直安慰自己勃救,他們只是感情好,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布治力。 她就那樣靜靜地躺著蒙秒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宵统。 梳的紋絲不亂的頭發(fā)上晕讲,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音马澈,去河邊找鬼瓢省。 笑死,一個胖子當著我的面吹牛痊班,可吹牛的內(nèi)容都是我干的勤婚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼涤伐,長吁一口氣:“原來是場噩夢啊……” “哼馒胆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凝果,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤祝迂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后器净,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體型雳,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年山害,在試婚紗的時候發(fā)現(xiàn)自己被綠了纠俭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡粗恢,死狀恐怖柑晒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眷射,我是刑警寧澤匙赞,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站妖碉,受9級特大地震影響涌庭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欧宜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一坐榆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冗茸,春花似錦席镀、人聲如沸匹中。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顶捷。三九已至,卻和暖如春屎篱,著一層夾襖步出監(jiān)牢的瞬間服赎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工交播, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留重虑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓秦士,卻偏偏與公主長得像缺厉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子隧土,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容