欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker容器化工具及常用操作的詳細(xì)解析

 更新時(shí)間:2025年08月11日 11:21:36   作者:Kent_Li  
Docker是容器化技術(shù)的核心工具,掌握其常用命令能高效管理容器、鏡像、網(wǎng)絡(luò)和數(shù)據(jù)卷,這篇文章主要介紹了Docker容器化工具及常用操作的詳細(xì)解析,需要的朋友可以參考下

前言

Docker 是一款用于 “構(gòu)建、發(fā)布、運(yùn)行” 應(yīng)用程序 的容器化工具,核心價(jià)值是通過 “容器” 實(shí)現(xiàn)應(yīng)用的 跨環(huán)境一致性部署(解決 “開發(fā)環(huán)境能跑,生產(chǎn)環(huán)境跑不了” 的問題)。其底層依賴 Linux 內(nèi)核的 Namespace(資源隔離)和 Cgroups(資源限制)技術(shù),能在單一主機(jī)上虛擬出多個(gè)獨(dú)立的 “輕量級虛擬機(jī)”,但比傳統(tǒng)虛擬機(jī)更省資源、啟動(dòng)更快(秒級啟動(dòng))。以下是其核心概念、常用操作、進(jìn)階技巧的詳細(xì)解析:

一、核心概念(深度解析)

1.鏡像(Image)

  • 本質(zhì):一個(gè)分層的只讀文件系統(tǒng),包含運(yùn)行應(yīng)用所需的完整環(huán)境(操作系統(tǒng)內(nèi)核除外,共享主機(jī)內(nèi)核)。
*   例如:`nginx` 鏡像包含 Linux 基礎(chǔ)系統(tǒng)、Nginx 程序、配置文件等,拉取后可直接啟動(dòng)成 Web 服務(wù)器。
  • 分層結(jié)構(gòu):采用 UnionFS(聯(lián)合文件系統(tǒng)),每一層對應(yīng) Dockerfile 中的一條指令(如 FROM、RUN),分層設(shè)計(jì)的優(yōu)勢:
*   **復(fù)用性**:不同鏡像可共享底層層(如多個(gè)鏡像都基于 `ubuntu:20.04`,則共享該基礎(chǔ)層),節(jié)省存儲(chǔ)空間;

*   **可追溯性**:每一層修改可單獨(dú)記錄,便于調(diào)試(如通過 `docker history 鏡像名` 查看分層歷史)。
  • 標(biāo)簽(Tag):用于區(qū)分同一鏡像的不同版本(如 python:3.9python:3.10),默認(rèn)標(biāo)簽為 latest(指向最新版本,但不建議生產(chǎn)環(huán)境使用,避免版本變更導(dǎo)致問題)。

2.容器(Container)

  • 本質(zhì):鏡像的可運(yùn)行實(shí)例,在鏡像只讀層之上添加了一層 可寫層(Container Layer),所有運(yùn)行時(shí)修改(如新建文件、修改配置)都保存在這一層。
*   示例:啟動(dòng) `ubuntu` 容器后,執(zhí)行 `touch test.txt`,文件會(huì)保存在可寫層;刪除容器后,可寫層被清理,文件消失(需通過數(shù)據(jù)卷持久化)。
  • 生命周期
*   **創(chuàng)建**:`docker create`(僅創(chuàng)建不啟動(dòng))或 `docker run`(創(chuàng)建并啟動(dòng));

*   **運(yùn)行**:`docker start` 啟動(dòng)處于停止?fàn)顟B(tài)的容器;

*   **暫停**:`docker pause` 凍結(jié)容器進(jìn)程(保留內(nèi)存狀態(tài)),`docker unpause` 恢復(fù);

*   **停止**:`docker stop` 發(fā)送 SIGTERM 信號,等待進(jìn)程退出(默認(rèn)等待 10 秒),`docker kill` 強(qiáng)制發(fā)送 SIGKILL 終止進(jìn)程;

*   **刪除**:`docker rm` 刪除容器(需先停止,或用 `-f` 強(qiáng)制刪除運(yùn)行中容器)。

3.倉庫(Repository)與 Registry

  • 倉庫(Repository):存儲(chǔ)同一鏡像不同標(biāo)簽的集合(如 nginx 倉庫包含 1.211.23 等標(biāo)簽的鏡像)。
  • Registry:倉庫的集合平臺(tái)(如 Docker Hub 是公共 Registry,包含數(shù)百萬鏡像;企業(yè)可搭建私有 Registry,如 Harbor)。
  • 拉取 / 推送流程
*   拉取:`docker pull 倉庫地址/鏡像名:標(biāo)簽`(如 `docker pull ``mycompany.com/nginx:v1.0` 從私有倉庫拉?。?;

*   推送:需先登錄 Registry(`docker login 倉庫地址`),再執(zhí)行 `docker push 倉庫地址/鏡像名:標(biāo)簽`。

二、常用命令(含細(xì)節(jié)與場景)

1. 鏡像管理(含高級操作)

命令作用與細(xì)節(jié)
docker pull [鏡像名:標(biāo)簽]- 從 Registry 拉取鏡像,支持指定倉庫地址(如 docker pull harbor.example.com/base/ubuntu:20.04);- 若標(biāo)簽不存在,默認(rèn)拉取 latest(可能失敗,建議顯式指定標(biāo)簽)。
docker images- 列出本地鏡像,包含倉庫名、標(biāo)簽、ID、創(chuàng)建時(shí)間、大?。? 常用參數(shù):-q 僅顯示鏡像 ID,--filter "dangling=true" 顯示虛懸鏡像(標(biāo)簽為 <none> 的廢棄鏡像)。
docker rmi [鏡像ID/名稱]- 刪除鏡像,需先刪除依賴它的所有容器(可用 docker rm -f $(docker ps -aq --filter ancestor=鏡像名) 批量刪除關(guān)聯(lián)容器);- 批量刪除:docker rmi $(docker images -q --filter "dangling=true") 清理虛懸鏡像。
docker build -t [鏡像名:標(biāo)簽] .- 基于 Dockerfile 構(gòu)建鏡像,. 表示構(gòu)建上下文(Docker 會(huì)將該目錄下所有文件發(fā)送給 Docker 引擎);- 優(yōu)化技巧: - 用 .dockerignore 文件排除無關(guān)文件(如 node_modules),減少上下文大??; - 合理排序指令(頻繁修改的指令放后面),利用分層緩存加速構(gòu)建。
docker tag [源鏡像] [新鏡像名:標(biāo)簽]- 為鏡像添加新標(biāo)簽(如 docker tag nginx:latest mynginx:v1),用于推送至私有倉庫前重命名。
docker save -o [文件] [鏡像] / docker load -i [文件]- 導(dǎo)出鏡像為本地文件(save),或從文件導(dǎo)入鏡像(load),用于無網(wǎng)絡(luò)環(huán)境遷移鏡像(如 docker save -o nginx.tar nginx:latest)。

2. 容器管理(含參數(shù)詳解)

命令作用與細(xì)節(jié)
docker run [參數(shù)] [鏡像名] [命令]核心參數(shù)詳解:- -d:后臺(tái)運(yùn)行(守護(hù)模式),容器啟動(dòng)后返回容器 ID;- -p 主機(jī)端口:容器端口:端口映射(如 -p 8080:80 允許外部通過主機(jī) 8080 端口訪問容器 80 端口); - 進(jìn)階:-p 127.0.0.1:8080:80 僅允許本地訪問,-p 80 隨機(jī)映射主機(jī)端口(用 docker port 容器名 查看);- -v 主機(jī)目錄:容器目錄[:權(quán)限]:掛載數(shù)據(jù)卷(如 -v /data:/app/data:ro 只讀掛載,容器內(nèi)無法修改);- --name 容器名:指定名稱(如 --name web-server),避免用默認(rèn)隨機(jī)名稱;- --restart 策略:容器退出后的重啟策略(always 總是重啟,on-failure:3 失敗時(shí)最多重啟 3 次);- -e KEY=VALUE:設(shè)置環(huán)境變量(如 -e "TZ=Asia/Shanghai" 配置時(shí)區(qū));- --network 網(wǎng)絡(luò)名:指定容器所屬網(wǎng)絡(luò)(默認(rèn)使用 bridge 網(wǎng)絡(luò));示例docker run -d --name mysql -p 3306:3306 -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --restart always mysql:8.0
docker ps- 列出運(yùn)行中的容器,默認(rèn)顯示容器 ID、名稱、鏡像、狀態(tài)、端口映射等;- 常用參數(shù): - -a 顯示所有容器(包括停止的); - -l 顯示最近創(chuàng)建的容器; - --format "{{.ID}} {{.Names}} {{.Status}}" 自定義輸出格式(如僅顯示 ID、名稱、狀態(tài))。
docker start/stop/restart [容器]- start:啟動(dòng)停止的容器(保留之前的可寫層數(shù)據(jù));- stop:優(yōu)雅停止(發(fā)送 SIGTERM,等待 10 秒后強(qiáng)制終止);- restart:先停止再啟動(dòng)(常用于配置生效)。
docker exec -it [容器] [命令]- 進(jìn)入運(yùn)行中的容器執(zhí)行命令,-it 組合用于交互式操作(如 bash 終端);- 示例:docker exec -it mysql mysql -uroot -p 直接在容器內(nèi)啟動(dòng) MySQL 客戶端;- 非交互式執(zhí)行:docker exec 容器名 ls /app 查看容器內(nèi)文件。
docker logs [容器]- 查看容器日志(標(biāo)準(zhǔn)輸出 stdout 和標(biāo)準(zhǔn)錯(cuò)誤 stderr);- 常用參數(shù): - -f 實(shí)時(shí)跟蹤日志(類似 tail -f); - -t 顯示時(shí)間戳; - --tail 100 僅顯示最后 100 行; - --since 30m 顯示 30 分鐘內(nèi)的日志。
docker rm [容器]- 刪除容器,-f 強(qiáng)制刪除運(yùn)行中的容器(等價(jià)于先 stoprm);- 批量刪除:docker rm $(docker ps -aq) 刪除所有停止的容器。

3. 數(shù)據(jù)管理(數(shù)據(jù)卷與掛載)

  • 數(shù)據(jù)卷(Volume):Docker 管理的持久化存儲(chǔ),獨(dú)立于容器生命周期,適合長期保存數(shù)據(jù)(如數(shù)據(jù)庫文件)。
*   命令:
    *   創(chuàng)建卷:`docker volume create myvol`;

    *   查看卷:`docker volume ls`;

    *   掛載卷:`docker run -v myvol:/app/data ...`(卷名而非主機(jī)路徑);

    *   查看卷詳情:`docker volume inspect myvol`(可看到卷在主機(jī)的實(shí)際路徑,如 `/var/lib/docker/volumes/myvol/_data`)。
  • 綁定掛載(Bind Mount):直接掛載主機(jī)目錄到容器,適合開發(fā)時(shí)實(shí)時(shí)同步代碼(如掛載本地代碼目錄到容器,修改本地文件后容器內(nèi)立即生效)。
*   注意:主機(jī)目錄路徑必須絕對路徑(如 `-v /home/code:/app`,Windows 下為 `-v C:\code:/app`);

*   權(quán)限問題:容器內(nèi)用戶 ID 可能與主機(jī)不同,需通過 `-u` 參數(shù)指定用戶(如 `docker run -u $(id -u):$(id -g) ...` 避免權(quán)限沖突)。
  • 臨時(shí)文件系統(tǒng)(Tmpfs Mount):數(shù)據(jù)僅存于內(nèi)存,容器停止后丟失,適合臨時(shí)緩存(如 docker run --tmpfs /tmp ...)。

4. 網(wǎng)絡(luò)管理(容器通信)

  • 默認(rèn)網(wǎng)絡(luò)模式
*   `bridge`:默認(rèn)模式,容器通過虛擬網(wǎng)橋通信,可通過端口映射訪問外部;

*   `host`:容器共享主機(jī)網(wǎng)絡(luò)(無端口映射,直接使用主機(jī) IP 和端口,性能好但安全性低);

*   `none`:禁用網(wǎng)絡(luò),適合無需聯(lián)網(wǎng)的容器;

*   `container:容器名`:共享指定容器的網(wǎng)絡(luò)(如兩個(gè)容器共用網(wǎng)絡(luò)棧)。

  • 自定義網(wǎng)絡(luò):適合多容器通信(如前端容器訪問后端容器),支持 DNS 解析(通過容器名訪問)。
*   命令:

    *   創(chuàng)建網(wǎng)絡(luò):`docker network create mynet`(默認(rèn)橋接模式);

    *   容器加入網(wǎng)絡(luò):`docker run --network mynet --name backend ...`;

    *   跨網(wǎng)絡(luò)通信:`docker network connect mynet 容器名` 將運(yùn)行中容器加入新網(wǎng)絡(luò)。

5. 系統(tǒng)管理與優(yōu)化

命令作用與細(xì)節(jié)
docker info查看 Docker 系統(tǒng)信息,包括:- 服務(wù)器版本、API 版本、操作系統(tǒng);- 鏡像數(shù)、容器數(shù)(運(yùn)行 / 停止 / 總數(shù));- 存儲(chǔ)驅(qū)動(dòng)(如 overlay2,推薦用于生產(chǎn)環(huán)境);- 網(wǎng)絡(luò)驅(qū)動(dòng)、數(shù)據(jù)卷驅(qū)動(dòng)等。
docker system prune清理無用資源(未使用的鏡像、容器、網(wǎng)絡(luò)、卷),釋放磁盤空間:- 基礎(chǔ)用法:docker system prune 清理未使用的容器、網(wǎng)絡(luò);- 進(jìn)階:docker system prune -a 同時(shí)清理未被使用的鏡像;docker system prune --volumes 清理未使用的卷(謹(jǐn)慎!可能刪除重要數(shù)據(jù))。
docker stats實(shí)時(shí)查看容器資源占用(CPU、內(nèi)存、網(wǎng)絡(luò) IO、磁盤 IO),類似 top 命令;- 參數(shù):--no-stream 只顯示一次,--format 自定義輸出。
docker inspect [對象]查看容器、鏡像、網(wǎng)絡(luò)、卷的詳細(xì)元數(shù)據(jù)(JSON 格式):- 示例:docker inspect 容器名 可獲取 IP 地址、掛載信息、環(huán)境變量等;- 過濾輸出:docker inspect --format '{{.NetworkSettings.IPAddress}}' 容器名 僅顯示 IP 地址。

三、Dockerfile 詳解(構(gòu)建自定義鏡像)

Dockerfile 是構(gòu)建鏡像的 “腳本文件”,包含一系列指令,每條指令對應(yīng)鏡像的一層。以下是常用指令及最佳實(shí)踐:

1. 基礎(chǔ)指令

  • FROM [鏡像]:指定基礎(chǔ)鏡像(如 FROM python:3.9-slim,推薦使用官方精簡鏡像 slim 版本減小體積);
  • WORKDIR /app:設(shè)置工作目錄(后續(xù)命令默認(rèn)在此目錄執(zhí)行,類似 cd);
  • COPY [源路徑] [目標(biāo)路徑]:復(fù)制主機(jī)文件到鏡像(如 COPY requirements.txt .);
  • ADD [源路徑] [目標(biāo)路徑]:類似 COPY,但支持 URL 下載和自動(dòng)解壓壓縮包(建議優(yōu)先用 COPY,更明確);
  • RUN [命令]:執(zhí)行命令并提交結(jié)果(如 RUN pip install -r requirements.txt);
*   技巧:多條命令用 `&&` 連接(如 `RUN apt update && apt install -y gcc && rm -rf /var/lib/apt/lists/*`),減少分層數(shù)量;
  • ENV KEY=VALUE:設(shè)置環(huán)境變量(如 ENV PYTHONDONTWRITEBYTECODE=1 禁止生成 .pyc 文件);
  • EXPOSE 80:聲明容器監(jiān)聽的端口(僅為文檔說明,實(shí)際需通過 -p 映射);
  • CMD ["命令", "參數(shù)"]:容器啟動(dòng)時(shí)執(zhí)行的命令(若 docker run 后指定命令,會(huì)覆蓋 CMD);
  • ENTRYPOINT ["命令"]:容器入口點(diǎn)(與 CMD 配合,CMD 作為參數(shù),如 ENTRYPOINT ["python"]CMD ["``app.py``"],啟動(dòng)時(shí)執(zhí)行 python ``app.py)。

2. 構(gòu)建優(yōu)化示例

# 基礎(chǔ)鏡像(精簡版)

FROM python:3.9-slim

# 設(shè)置工作目錄
WORKDIR /app
# 復(fù)制依賴文件并安裝(利用緩存,修改代碼不重新安裝依賴)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 復(fù)制代碼(最后復(fù)制,減少緩存失效)
COPY . .
# 聲明端口
EXPOSE 8000
# 啟動(dòng)命令
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

四、Docker Compose(多容器管理)

當(dāng)應(yīng)用依賴多個(gè)服務(wù)(如 “Web 應(yīng)用 + 數(shù)據(jù)庫 + Redis”),手動(dòng)管理容器網(wǎng)絡(luò)、掛載、啟動(dòng)順序繁瑣,此時(shí)用 docker-compose 簡化流程:

1. 核心配置文件docker-compose.yml

version: '3.8'  # 兼容最新特性
services:
  web:  # Web服務(wù)
   build: .  # 基于當(dāng)前目錄Dockerfile構(gòu)建
   ports:
     - "8000:8000"
   depends_on:  # 依賴db和redis,啟動(dòng)時(shí)先啟動(dòng)依賴
     - db
     - redis
   environment:
     - DATABASE_URL=mysql://root:123456@db:3306/mydb
   restart: always
 db:  # 數(shù)據(jù)庫服務(wù)
   image: mysql:8.0
   volumes:
     - mysql-data:/var/lib/mysql  # 數(shù)據(jù)卷持久化
   environment:
     - MYSQL_ROOT_PASSWORD=123456
     - MYSQL_DATABASE=mydb
   restart: always
 redis:  # Redis服務(wù)
   image: redis:6-alpine  # 精簡版鏡像
   volumes:
     - redis-data:/data
   restart: always
volumes:  # 聲明數(shù)據(jù)卷(自動(dòng)創(chuàng)建)
 mysql-data:
 redis-data:

2. 常用命令

命令作用
docker-compose up -d后臺(tái)啟動(dòng)所有服務(wù)(首次運(yùn)行會(huì)構(gòu)建鏡像)
docker-compose down停止并刪除所有服務(wù)、網(wǎng)絡(luò)(保留數(shù)據(jù)卷)

總結(jié) 

到此這篇關(guān)于Docker容器化工具及常用操作的文章就介紹到這了,更多相關(guān)Docker容器化工具及操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker?部署?vue?項(xiàng)目的詳細(xì)流程

    Docker?部署?vue?項(xiàng)目的詳細(xì)流程

    使用Docker配合Nginx部署Vue3項(xiàng)目涉及多個(gè)步驟:首先安裝Nginx,然后創(chuàng)建掛載目錄及配置文件;接著打包Vue項(xiàng)目并上傳至服務(wù)器;最后創(chuàng)建Dockerfile,構(gòu)建鏡像并啟動(dòng)容器,部署完成后,通過IP訪問應(yīng)用以驗(yàn)證是否成功
    2024-09-09
  • 教你使用docker安裝elasticsearch和head插件的方法

    教你使用docker安裝elasticsearch和head插件的方法

    這篇文章主要介紹了docker安裝elasticsearch和head插件,安裝時(shí)需要下載鏡像和修改系統(tǒng)參數(shù),本文分流程給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Docker安裝分布式vLLM的實(shí)現(xiàn)步驟

    Docker安裝分布式vLLM的實(shí)現(xiàn)步驟

    本文主要介紹了Docker使用vLLM庫進(jìn)行分布式推理和服務(wù)部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • 定時(shí)清理docker私服鏡像的方法

    定時(shí)清理docker私服鏡像的方法

    這篇文章主要介紹了定時(shí)清理docker私服鏡像的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • docker?update?命令及用法詳解

    docker?update?命令及用法詳解

    docker?update?命令動(dòng)態(tài)更新容器配置,您可以使用此命令來防止容器消耗?Docker?主機(jī)的過多資源,本文給大家介紹docker?update?命令及用法,感興趣的朋友一起看看吧
    2023-08-08
  • docker安裝redis掛載容器卷同時(shí)開啟持久化

    docker安裝redis掛載容器卷同時(shí)開啟持久化

    本文主要介紹了docker安裝redis掛載容器卷同時(shí)開啟持久化,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • docker 啟動(dòng)elasticsearch鏡像,掛載目錄后報(bào)錯(cuò)的解決

    docker 啟動(dòng)elasticsearch鏡像,掛載目錄后報(bào)錯(cuò)的解決

    這篇文章主要介紹了docker 啟動(dòng) elasticsearch鏡像,掛載目錄后報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker拉取鏡像超時(shí)的原因分析與解決方法

    Docker拉取鏡像超時(shí)的原因分析與解決方法

    這篇文章主要為大家詳細(xì)介紹了Docker在拉取鏡像時(shí)超時(shí)的相關(guān)原因分析與解決方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • docker中的環(huán)境變量使用與常見問題解決方案

    docker中的環(huán)境變量使用與常見問題解決方案

    這篇文章主要給大家介紹了關(guān)于docker中環(huán)境變量使用與常見問題解決方案的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用docker具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫的實(shí)現(xiàn)

    Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫的實(shí)現(xiàn)

    本文主要介紹了Jenkins構(gòu)建Docker鏡像并推送至Harbor倉庫,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論