Docker-compose 常用命令及网络设置(五)
Docker Compose 常用命令
構(gòu)建或重新構(gòu)建服務(wù)。服務(wù)被構(gòu)建后將會以 project_service的形式標記,例如:comoretest db。
査看指定命令的幫助文檔,該命令非常實用。 docker-compose所有命令的幫助文檔都可通過該命令查看。
示例
docker-compose he lp build #查看 docker- compose build的幫助通過發(fā)送SI6KILL信號停止指定服務(wù)的容器。示例
該命令也支持通過參數(shù)來指定發(fā)送的信號,例如:
docker-compose kill -s nginx查看服務(wù)的日志輸出。
打印綁定的公共端口。示例
這樣就可輸出 nginx服務(wù)8080端口所綁定的公共端口。
6. ps
列出所有容器。示例
也可列出指定服務(wù)的容器,示例:
docker-compose ps nginx下載服務(wù)鏡像。示例
刪除指定服務(wù)的容器。示例:
在一個服務(wù)上執(zhí)行一個命令。示例
這樣即可啟動一個web服務(wù),同時執(zhí)行bash命令。
10. scale
設(shè)置指定服務(wù)運行容器的個數(shù),以 service=num的形式指定。示例
啟動指定服務(wù)已存在的容器。示例
停止已運行的容器。示例:
停止后,可使用 docker-compose start再次啟動這些容器
13. up
構(gòu)建、創(chuàng)建、重新創(chuàng)建、啟動,連接服務(wù)的相關(guān)容器。所有連接的服務(wù)都會啟動,除非它們已經(jīng)運行。
docker-compose up 命令會聚合所有容器的輸出,當命令退出時,所有容器都會停止。
使用 docker-compose up -d 可在后臺啟動并運行所有容器。
本章是 docker-compose 的常用命令,其他命令可詳見Docker官方文檔:https://docs.docker.com/compose/reference/overview/
Docker Compose網(wǎng)絡(luò)設(shè)置
本章所闡述的網(wǎng)絡(luò)特性僅適用于 Version2 file format,Version1 file format不支持該特性。
基本概念
默認情況下, Compose會為應(yīng)用創(chuàng)建一個網(wǎng)絡(luò),服務(wù)的每個容器都會加入該網(wǎng)絡(luò)中。這樣,容器就可被該網(wǎng)絡(luò)中的其他容器訪問,不僅如此,該容器還能以服務(wù)名稱作為hostname被其他容器訪問。
默認情況下,應(yīng)用程序的網(wǎng)絡(luò)名稱基于 Compose的工程名稱,而項目名稱基于 docker-compose.yml 所在目錄的名稱。如需修改工程名稱,可使用 --project-name標識或COMPOSE_ PORJECT_NAME環(huán)境變量。
舉個例子,假如一個應(yīng)用程序在名為 myapp的目錄中,并且 docker-compose.yml如下所示:
當運行 docker-compose up時,將會執(zhí)行以下幾步:
- 創(chuàng)建一個名為 myapp_default 的網(wǎng)絡(luò)。
- 使用 web 服務(wù)的配置創(chuàng)建容器,它以"web"這個名稱加入網(wǎng)絡(luò) myapp_default
- 使用 db 服務(wù)的配置創(chuàng)建容器,它以"db"這個名稱加入網(wǎng)絡(luò) myapp_default
容器間可使用服務(wù)名稱( web 或 db )作為 hostname 相互訪問。例如,web這個服務(wù)可使用 postgres://db:5432訪問db容器。
更新容器
當服務(wù)的配置發(fā)生更改時,可使用 docker-compose up命令更新配置。
此時, Compose會刪除舊容器并創(chuàng)建新容器。新容器會以不同的 IP 地址加入網(wǎng)絡(luò),名稱保持不變。任何指向舊容器的連接都會被關(guān)閉,容器會重新找到新容器并連接上去。
links
前文講過,默認情況下,服務(wù)之間可使用服務(wù)名稱相互訪問。 links允許定義一個別名,從而使用該別名訪問其他服務(wù)。舉個例子:
version: 2 servlce:web:build: .links:- "db:database"db:image: postgres這樣 Web 服務(wù)就可使用 db 或 database 作為 hostname 訪問 db 服務(wù)了。例如,postgres://database:5432
指定自定義網(wǎng)絡(luò)
一些場景下,默認的網(wǎng)絡(luò)配置滿足不了我們的需求,此時可使用 networks 命令自定義網(wǎng)絡(luò)。networks 命令允許創(chuàng)建更加復(fù)雜的網(wǎng)絡(luò)拓撲并指定自定義網(wǎng)絡(luò)驅(qū)動和選項。不僅如此,還可使用 networks 將服務(wù)連接到不是由 Compose 管理的、外部創(chuàng)建的網(wǎng)絡(luò)。
如下,在其中定義了兩個自定義網(wǎng)絡(luò)。
其中, proxy 服務(wù)與 db 服務(wù)隔離,兩者分別使用自己的網(wǎng)絡(luò),app 服務(wù)可與兩者通信。
由本例不難發(fā)現(xiàn),使用 networks命令,即可方便實現(xiàn)服務(wù)間的網(wǎng)絡(luò)隔離與連接。
配置默認網(wǎng)絡(luò)
除自定義網(wǎng)絡(luò)外,也可為默認網(wǎng)絡(luò)自定義配置。
version: 2 servlce:web:build: .ports:- "8000:8000"db:image: postgres networks:default:# Use a custom driverdriver: custom-driver-1這樣,就可為該應(yīng)用指定自定義的網(wǎng)絡(luò)驅(qū)動。
使用已存在的網(wǎng)絡(luò)
一些場景下,并不需要創(chuàng)建新的網(wǎng)絡(luò),而只須加入已存在的網(wǎng)絡(luò),此時可使用 external
選項。示例:
學(xué)習(xí)于:《Spring Cloud與Docker 微服務(wù)架構(gòu)實戰(zhàn)》 — 周立
總結(jié)
以上是生活随笔為你收集整理的Docker-compose 常用命令及网络设置(五)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apache Pulsar PMC 成员
- 下一篇: spring mvc学习(14) the