Docker是一個(gè)容器化平臺(tái),可讓您快速構(gòu)建,測(cè)試和部署應(yīng)用程序,作為可在幾乎任何地方運(yùn)行的可移植的自給式容器。 Docker Compose是一個(gè)工具,可用于定義和編排多容器Docker應(yīng)用程序。它使用YAML文件來(lái)配置應(yīng)用程序的容器,網(wǎng)絡(luò)和卷。 Compose可以用于各種目的。單個(gè)主機(jī)應(yīng)用程序部署,自動(dòng)化測(cè)試和本地開(kāi)發(fā)是Docker Compose最受歡迎的用例。 本教程介紹了如何在Debian 10 Buster上安裝最新版本的Docker Compose。我們還將探索基本的Docker Compose概念和命令。 先決條件在繼續(xù)之前,請(qǐng)確保您已滿足以下先決條件: 在Debian 10上安裝Docker Compose官方的Debian 10倉(cāng)庫(kù)中提供了Docker Compose安裝軟件包,但它不一定總是最新版本。推薦的方法是從Docker的GitHub存儲(chǔ)庫(kù)安裝Docker Compose。 在撰寫本文時(shí),最新的Docker Compose穩(wěn)定版本是version 1.23.1 。在下載Compose二進(jìn)制文件之前,請(qǐng)?jiān)L問(wèn)GitHub上的Compose存儲(chǔ)庫(kù)發(fā)行頁(yè)面,并檢查是否有新版本可下載。 使用以下步驟在Debian 10上安裝最新版本的Docker Compose: /usr/local/bin 使用wget 或?qū)ocker Compose二進(jìn)制文件下載到目錄中curl :
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
使用chmod 使撰寫二進(jìn)制可執(zhí)行文件: sudo chmod +x /usr/local/bin/docker-compose
要驗(yàn)證安裝,請(qǐng)使用以下命令打印出Compose版本: docker-compose --version
輸出將如下所示: docker-compose version 1.23.1, build b02f1306
Docker Compose入門在本節(jié)中,我們將展示如何使用Docker Compose設(shè)置本地WordPress開(kāi)發(fā)環(huán)境。 為項(xiàng)目創(chuàng)建一個(gè)目錄并cd到其中: mkdir wordpress_app && cd wordpress_app
打開(kāi)您的文本編輯器,然后創(chuàng)建一個(gè)名為的文件docker-compose.yml : nano docker-compose.yml
粘貼以下內(nèi)容,docker-compose.yml: version: '3.7'
services:
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
wordpress:
image: wordpress
restart: always
volumes:
- ./wp_data:/var/www/html
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
volumes:
db_data:
wp_data:
讓我們逐行解釋代碼 第一行指定Compose文件的版本。有多種不同版本的Compose文件格式,支持特定的Docker版本。 接下來(lái),我們定義兩個(gè)服務(wù),db 和wordpress 。運(yùn)行Docker Compose時(shí),每個(gè)服務(wù)都會(huì)創(chuàng)建一個(gè)單獨(dú)的容器。 該db 服務(wù): 圖像被設(shè)置為mysql:8.0 圖像。如果不存在該映像,則Compose將從Docker Hub公共存儲(chǔ)庫(kù)中提取該映像。以開(kāi)頭的行將command 覆蓋默認(rèn)命令。 該restart: always 策略指示Compose如果發(fā)生故障,請(qǐng)重新啟動(dòng)容器。 容器將使用命名卷db_data 來(lái)持久化數(shù)據(jù)庫(kù)。 定義mysql:8.0 圖像的環(huán)境變量。
該wordpress 服務(wù): 使用wordpress 圖像。 wp_data 將主機(jī)上的目錄掛載到/var/lib/mysql 容器內(nèi)部。
80 將容器上的裸露端口轉(zhuǎn)發(fā)到8080 主機(jī)上的端口。
定義環(huán)境變量的wordpress 圖像。 該depends_on 指令定義了兩個(gè)服務(wù)之間的依賴關(guān)系。在此示例中,db 將在之前啟動(dòng)wordpress 。
在項(xiàng)目目錄中,通過(guò)運(yùn)行以下命令來(lái)啟動(dòng)WordPress堆棧: docker-compose up
輸出應(yīng)如下所示: ...
] /usr/sbin/mysqld: ready for connections. Version: '8.0.18' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
db_1_99946702ac7e | 2019-12-15T21:37:29.109255Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/var/run/mysqld/mysqlx.sock' bind-address: '::' port: 33060
...
Docker Compose將提取圖像,啟動(dòng)容器,并wp_data 在您的項(xiàng)目目錄中創(chuàng)建目錄。 http://0.0.0.0:8080/ 在瀏覽器中輸入,您將看到標(biāo)準(zhǔn)的WordPress安裝屏幕。
至此,WordPress應(yīng)用程序已啟動(dòng)并運(yùn)行,您可以開(kāi)始使用它了。 要停止撰寫,請(qǐng)按CTRL+C 。 您還可以使用以下-d 選項(xiàng)以分離模式啟動(dòng)Compose : docker-compose up -d
要查看正在運(yùn)行的Docker容器,請(qǐng)使用以下命令: docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------
wordpress_app_db_1_99946702ac7e docker-entrypoint.sh --def ... Up 3306/tcp, 33060/tcp
wordpress_app_wordpress_1_a428d8408817 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
要在Compose以分離模式運(yùn)行時(shí)停止服務(wù),請(qǐng)使用: docker-compose stop
如果要完全刪除容器,請(qǐng)使用以下down 選項(xiàng): docker-compose down
通過(guò)--volumes 交換機(jī)還會(huì)刪除數(shù)據(jù)量: docker-compose down --volumes
卸載Docker Compose如果需要卸載Docker Compose,只需輸入以下內(nèi)容即可刪除二進(jìn)制文件: sudo rm /usr/local/bin/docker-compose
|