Docker?Compose常用命令總結(jié)大全
安裝docker-comose
docker20.10+
之后的版本,默認(rèn)支持docker compose
命令,無需再額外安裝
docker-compose程序.
# 聲明版本 VER=2.35.1 # 下載二進(jìn)制程序 wget -c https://github.com/docker/compose/releases/download/v$VER/docker-compose-linux-x86_64 # 創(chuàng)建bin目錄 mkdir -p $HOME/bin # 移動(dòng)到bin mv docker-compose-linux-x86_64 ./bin/docker-compose # 授予執(zhí)行權(quán)限 chmod +x ./bin/docker-compose # 查看docker-compose版本 docker-compose -v
docker-compose配置文件及常用指令
Docker Compose 使用 YAML 文件來定義多服務(wù)的應(yīng)用。YAML 是 JSON 的一個(gè)子集,因此也可以使用JSON。
Docker Compose 默認(rèn)使用文件名 docker-compose.yml
。當(dāng)然,也可以使用 -f
參數(shù)指定具體文件。
yaml 文件級
Docker Compose 的 YAML 文件包含 4 個(gè)一級 key:version、services、networks、volumes
- version 是必須指定的,而且總是位于文件的第一行。它定義了 Compose 文件格式(主要是 API)的版本。注意,version 并非定義 Docker Compose 或 Docker 引擎的版本號(hào)。
- services 用于定義不同的應(yīng)用服務(wù)。上邊的例子定義了兩個(gè)服務(wù):一個(gè)名為 lagou-mysql數(shù)據(jù)庫服 務(wù)以及一個(gè)名為lagou-eureka的微服。Docker Compose 會(huì)將每個(gè)服務(wù)部署在各自的容器中。
- networks 用于指引 Docker 創(chuàng)建新的網(wǎng)絡(luò)。默認(rèn)情況下,Docker Compose 會(huì)創(chuàng)建 bridge 網(wǎng)絡(luò)。 這是一種單主機(jī)網(wǎng)絡(luò),只能夠?qū)崿F(xiàn)同一主機(jī)上容器的連接。當(dāng)然,也可以使用 driver 屬性來指定不 同的網(wǎng)絡(luò)類型。
- volumes 用于指引 Docker 來創(chuàng)建新的卷。
docker-compose.yml配置文件示例
services: # 定義服務(wù) confluence: # 定義 confluence 服務(wù) # 8.5.19 長期維護(hù)版本 # 9.2.1 最新版本 image: omaidb/confluence:8.5.19 # 使用的confluence長期維護(hù)版 鏡像及其版本 container_name: confluence-srv # 容器名稱 environment: # 設(shè)置環(huán)境變量 - TZ=Asia/Shanghai # 設(shè)置時(shí)區(qū)為上海 # - JVM_MINIMUM_MEMORY=1g # JVM 最小內(nèi)存 # - JVM_MAXIMUM_MEMORY=12g # JVM 最大內(nèi)存 # - JVM_CODE_CACHE_ARGS='-XX:InitialCodeCacheSize=1g -XX:ReservedCodeCacheSize=8g' # JVM 代碼緩存參數(shù) # 定義服務(wù)依賴 depends_on: - postgres # 依賴 postgres 服務(wù) ports: # 映射端口 - "80:8090" # 將宿主機(jī)的 8090 端口映射到容器的 8090 端口 volumes: # 定義數(shù)據(jù)卷 - home_data:/var/confluence # 將數(shù)據(jù)卷掛載到容器的 /var/confluence 目錄 restart: always # 設(shè)置容器始終重啟策略 networks: # 指定網(wǎng)絡(luò) - network-bridge # 使用 network-bridge 網(wǎng)絡(luò) # 定義名為 postgres 的服務(wù) postgres: image: postgres:15.4 # 使用 postgres 15.4 版本的鏡像 container_name: postgres-confluence # 容器名稱 healthcheck: # 健康檢查配置 test: ["CMD", "pg_isready", "-q", "-d", "postgres", "-U", "root"] # 檢查 PostgreSQL 服務(wù)是否可用 timeout: 45s # 健康檢查的超時(shí)時(shí)間為 45 秒 interval: 10s # 健康檢查的間隔時(shí)間為 10 秒 retries: 10 # 健康檢查失敗后重試的次數(shù)為 10 次 environment: # 定義環(huán)境變量 - TZ=Asia/Shanghai # 設(shè)置時(shí)區(qū)為上海 - POSTGRES_USER=root # PostgreSQL 的默認(rèn)用戶名為 root - POSTGRES_PASSWORD=123456 # PostgreSQL 的默認(rèn)密碼為 123456 - APP_DB_USER=confluence # 應(yīng)用程序的數(shù)據(jù)庫用戶名為 confluence - APP_DB_PASS=123456 # 應(yīng)用程序的數(shù)據(jù)庫密碼為 123456 - APP_DB_NAME=confluence # 應(yīng)用程序的數(shù)據(jù)庫名稱為 confluence volumes: # 定義數(shù)據(jù)卷 # - ./db:/docker-entrypoint-initdb.d/ # 將本地 ./db 目錄掛載到容器的 /docker-entrypoint-initdb.d/ 目錄 - postgres_data:/var/lib/postgresql/data # 將本地 /data/postgres 目錄掛載到容器的 /var/lib/postgresql/data 目錄 ports: # 定義端口映射 - 5432:5432 # 將本地的 5432 端口映射到容器的 5432 端口 restart: always # 服務(wù)失敗時(shí)總是重啟 networks: # 指定網(wǎng)絡(luò) - network-bridge # 使用 network-bridge 網(wǎng)絡(luò) networks: # 定義網(wǎng)絡(luò) network-bridge: # 定義名為 network-bridge 的網(wǎng)絡(luò) driver: bridge # 使用 bridge 驅(qū)動(dòng) volumes: # 定義數(shù)據(jù)卷 home_data: # 定義名為 home_data 的數(shù)據(jù)卷 external: false # 數(shù)據(jù)卷為內(nèi)部創(chuàng)建 postgres_data: # 定義名為 postgres_data 的數(shù)據(jù)卷 external: false # 數(shù)據(jù)卷為內(nèi)部創(chuàng)建
docker compose常用命令
命令 (Command) | 主要功能 (Description) | 常用選項(xiàng) (Common Options) | 示例 (Example) |
---|---|---|---|
up | 構(gòu)建、(重新)創(chuàng)建、啟動(dòng)并關(guān)聯(lián)服務(wù)相關(guān)的容器。 | -d : 后臺(tái)運(yùn)行 (Detached mode) --build : 強(qiáng)制重新構(gòu)建鏡像 --force-recreate : 強(qiáng)制重新創(chuàng)建容器 --no-deps : 不啟動(dòng)鏈接的服務(wù) | docker-compose up -d docker-compose up --build docker-compose up <service_name> |
down | 停止并移除容器、網(wǎng)絡(luò)、卷和鏡像。 | -v , --volumes : 同時(shí)移除數(shù)據(jù)卷 --rmi <type> : 移除鏡像 (all 或 local ) --remove-orphans : 移除未在 compose 文件中定義的服務(wù)的容器 | docker-compose down docker-compose down -v |
start | 啟動(dòng)已經(jīng)存在的服務(wù)容器。 | docker-compose start <service_name> docker-compose start | |
stop | 停止正在運(yùn)行的服務(wù)容器,但不刪除它們。 | -t, --timeout <seconds> : 停止超時(shí)時(shí)間 (默認(rèn) 10s) | docker-compose stop <service_name> docker-compose stop |
restart | 重啟服務(wù)容器。 | -t, --timeout <seconds> : 重啟/停止超時(shí)時(shí)間 | docker-compose restart <service_name> docker-compose restart |
ps | 列出 Compose 項(xiàng)目中的容器。 | -q : 只顯示容器 ID --services : 只列出服務(wù)名稱 -a , --all : 顯示所有容器 (包括已停止的) | docker-compose ps docker-compose ps -q |
logs | 查看服務(wù)容器的日志輸出。 | -f , --follow : 持續(xù)跟蹤日志輸出 --tail <N> : 顯示最后 N 行日志 -t , --timestamps : 顯示時(shí)間戳 | docker-compose logs -f <service_name> docker-compose logs --tail 50 |
build | 構(gòu)建或重新構(gòu)建服務(wù)的鏡像。 | --no-cache : 構(gòu)建鏡像時(shí)不使用緩存 --pull : 始終嘗試?yán)「碌幕A(chǔ)鏡像 | docker-compose build <service_name> docker-compose build --no-cache |
pull | 拉取服務(wù)依賴的鏡像。 | --ignore-pull-failures : 拉取失敗時(shí)繼續(xù) -q , --quiet : 只顯示進(jìn)度,不輸出詳細(xì)信息 | docker-compose pull docker-compose pull <service_name> |
exec | 在正在運(yùn)行的容器中執(zhí)行命令。 | -d : 分離模式運(yùn)行 -T : 禁用偽 TTY 分配 (例如用于管道) -u , --user <user> : 指定用戶 | docker-compose exec <service_name> bash docker-compose exec -T db psql -U user -d dbname |
run | 在新容器中運(yùn)行一次性命令。 | --rm : 命令結(jié)束后移除容器 -e <KEY=VAL> : 設(shè)置環(huán)境變量 -v <host:cont> : 掛載卷 --service-ports : 映射服務(wù)端口 | docker-compose run --rm web python manage.py migrate docker-compose run -e DEBUG=1 web |
config | 驗(yàn)證和查看 Compose 文件配置。 | -q , --quiet : 只驗(yàn)證配置,無錯(cuò)誤時(shí)不輸出 --services : 打印服務(wù)名稱列表 --volumes : 打印卷名稱列表 | docker-compose config docker-compose config -q |
rm | 刪除已停止的服務(wù)容器。 | -f , --force : 強(qiáng)制刪除 -s , --stop : 在刪除前先停止容器 -v : 同時(shí)刪除關(guān)聯(lián)的匿名卷 | docker-compose rm docker-compose rm -fsv |
pause | 暫停服務(wù)中的容器進(jìn)程 (利用 cgroup freezer)。 | docker-compose pause <service_name> | |
unpause | 恢復(fù)服務(wù)中被暫停的容器進(jìn)程。 | docker-compose unpause <service_name> | |
kill | 通過發(fā)送 SIGKILL 信號(hào)強(qiáng)制停止服務(wù)容器。 | -s <signal> : 指定發(fā)送的信號(hào) (默認(rèn) SIGKILL) | docker-compose kill <service_name> docker-compose kill -s SIGTERM web |
通用選項(xiàng) (Global Options):
-f, --file <filename>
: 指定一個(gè)或多個(gè) Compose 配置文件 (默認(rèn)為docker-compose.yml
)。-p, --project-name <name>
: 指定項(xiàng)目名稱 (默認(rèn)為當(dāng)前目錄名)。--profile <profile_name>
: 激活指定配置文件的服務(wù)。
啟動(dòng)服務(wù)
- 啟動(dòng)服務(wù)
# 前臺(tái)啟動(dòng)服務(wù) docker compose up ## -d 守護(hù)進(jìn)程 docker compose up -d
- 啟動(dòng)服務(wù)
# 啟動(dòng)服務(wù) docker compose start
停止服務(wù)
- 停止服務(wù)
# 停止服務(wù) docker compose down
- 停止服務(wù)
# 停止已運(yùn)行的服務(wù) docker compose stop
重啟服務(wù)
- 重啟服務(wù)
# 重啟服務(wù) docker compose restart
查看運(yùn)行容器列表
- 列出所有運(yùn)行容器
# 列出所有運(yùn)行容器 docker compose ps ## -a 包括停止的容器 docker compose ps
查看服務(wù)日志
- 查看服務(wù)日志
# 查看服務(wù)日志 docker compose logs <服務(wù)名>
構(gòu)建鏡像
- 構(gòu)建
# 構(gòu)建或者重新構(gòu)建服務(wù) docker compose build
docker-compose rm刪除
# 刪除已停止的服務(wù)容器 docker compose rm
參數(shù) | 解釋 |
---|---|
-f, --force | 不要求確認(rèn)刪除 |
-s, --stop | 如果需要,請?jiān)趧h除之前停止容器 |
-v, --volumes | 刪除附加到容器的所有匿名卷 |
總結(jié)
到此這篇關(guān)于Docker Compose常用命令總結(jié)大全的文章就介紹到這了,更多相關(guān)Docker Compose常用命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝MySQL鏡像實(shí)戰(zhàn)分享
這篇文章主要給大家分享了Docker安裝MySQL鏡像實(shí)戰(zhàn),讓大家更深入的了解容器的使用場景,文章通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04Docker+DockerCompose封裝web應(yīng)用的方法步驟
這篇文章會(huì)介紹如何將后端、前端和網(wǎng)關(guān)通通使用 Docker 容器進(jìn)行運(yùn)行,并最終使用 DockerCompose 進(jìn)行容器編排,感興趣的可以了解一下2021-08-08docker部署微信小程序自動(dòng)構(gòu)建發(fā)布和更新的詳細(xì)步驟
通過 Jenkins 和 Docker 部署微信小程序,并實(shí)現(xiàn)自動(dòng)構(gòu)建、發(fā)布和版本更新,主要涉及到幾個(gè)步驟,下面給大家分享docker部署微信小程序自動(dòng)構(gòu)建發(fā)布和更新的詳細(xì)步驟,感興趣的朋友一起看看吧2024-12-12