Docker-compose 安装与基本使用(四)
安裝 Docker-Compose
Compose有多種安裝方式,例如通過 shell, pip以及將 Compose作為容器安裝等。本次安裝以Shell 為主。
這樣, Compose就安裝完成了。
可使用以下命令測試安裝結果:
可輸出類似于如下的內容:4 586bhjnkmv
docker-compose version 1.10.0, build 4bd6f1a說明 Compose已成功安裝。
安裝 Compose命令補全工具
現在已成功安裝 Compose,然而當輸 Docker Compose并按下Tab鍵時, Compose并沒有補全命令。要想使用 Compose的命令補全,需要安裝命令補全工具。
命令補全工具在Bash和zsh下的安裝方式不同,本次以Bash安裝為主。
執行以下命令,即可安裝命令補全工具:
這樣,在重新登錄后,輸入 docker-compose并按下Tab鍵,compose就可自動補全命令了。
Docker Compose 快速入門
基本步驟
使用 Docker Compose 大致有 3 個步驟:
- 使用 Dockerfile (或其他方式)定義應用程序環境,以便在任何地方重現該環境。
- 在 docker-compose.yml 文件中定義組成應用程序的服務,以便各個服務在一個隔離的環境中一起運行。
- 運行 docker-compose up 命令,啟動并運行整個應用程序。
人門示例
下面以 wzq-swagger-mng 為例講解 compose 的基本步驟。
docker-compose up
Compose就會自動構建鏡像并使用鏡像啟動容器。也可使用 docker-compose up -d后臺啟動并運行這些容器。
工程、服務、容器
Docker Compose將所管理的容器分為三層,分別是工程(project),服務(service)以及容器(container)。Docker Compose運行目錄下的所有文件( docker-compose.yml、extends文件或環境變量文件等)組成一個工程(默認為 docker-compose.yml所在目錄的目錄名稱)。一個工程可包含多個服務,每個服務中定義了容器運行的鏡像、參數和依賴,一個服務可包括多個容器實例。
對應上面案例中工程名稱是 docker-compose.yml 所在的目錄名。該工程包含了1個服務,服務名稱是 wzq-swagger-mng。執行 docker-compose up -d 時,啟動了 wzq-swagger-mng 服務的1個容器實例。
docker-compose.yml 常用命令
docker-compose.yml是 Compose的默認模板文件。該文件有多種寫法,例如 Version 1 file format、 Version2 file format、Version2. 1 file format、 Version3 file format等。其中, Version 1 file format將逐步被被棄用, Version2x及 Version3x基本兼容,是未來的趨勢。本次只討論 Version2 file format下的常用命令。
配置構建時的選項, Compose會利用它自動構建鏡像。buld的值可以是一個路徑
例如
也可以是一個對象,用于指定 Dockerfile和參數,
例如
覆蓋容器啟動后默認執行的命令,示例
也可以是一個list,類似于 Dockerfile中的CMD指令,格式如下:
command: [bundle, exec, thin,-p, 3000]配置dns服務器。可以是一個值,也可以是一個列表。示例:
配置DNS的搜索域,可以是一個值,也可以是一個列表。示例
環境變量設置,可使用數組或字典兩種方式。示例:
從文件中獲取環境變量,可指定一個文件路徑或路徑列表。如果通過 docker-compose FILe指定了 Compose 文件,那么 eny_file中的路徑是 Compose 文件所在目錄的相對路徑。使用 environment 指定的環境變量會覆蓋 eny_file指定的環境變量。示例
暴露端口,只將端口暴露給連接的服務,而不暴露給宿主機。示例:
連接到 docker-compose.yml外部的容器,甚至并非 Compose 管理的容器,特別是提供共享或公共服務的容器。格式跟 links類似,例如:
指定鏡像名稱或鏡像Id,如果本地不存在該鏡像, Compose會嘗試下載該鏡像。
示例
連接到其他服務的容器。可以指定服務名稱和服務別名( SERVICE: ALIAS),也可只指定服務名稱。例如:
networks
詳細查看:Docker-compose 常用命令及網絡設置(五)
network_mode
設置網絡模式。示例
暴露端口信息,可使用H0ST:CONTAINER的格式,也可只指定容器端口(此時宿主機將會隨機選擇端口),類似于 docker run-p。
需要注意的是,當使用H0ST:CONTAINER格式映射端口時,容器端口小于60將會得到錯誤的接口,因為yaml會把xx:yy的數字解析為60進制。因此,建議使用字符串的形式。示例:
卷掛載路徑設置。可以設置宿主機路徑(HOST:CONTAINER),也可指定訪問模式(HOST:C0ONTAINER:ro)。示例:
從另一個服務或容器掛載卷。可指定只讀(ro)或讀寫(rw),默認是讀寫(rw)。
示例
docker-compose.yml還有很多其他命令,比如 depends_on、pid、 devices等。
本次僅挑選常用的命令進行講解,其他命令不再贅述。感興趣的讀者們可參考官方文檔:https://docs.docker.com/compose/compose-file/
學習于:《Spring Cloud與Docker 微服務架構實戰》 — 周立
總結
以上是生活随笔為你收集整理的Docker-compose 安装与基本使用(四)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mybatis学习(29):适用于没有自
- 下一篇: Java中使用native2ascii工