最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker核心命令與實踐指南示例詳解

 更新時間:2025年06月17日 15:24:06   作者:weixin_52318532  
本文系統(tǒng)整理Docker的核心概念與常用命令,涵蓋鏡像管理、容器操作、數(shù)據(jù)存儲、網(wǎng)絡(luò)配置、Compose 編排以及 Dockerfile 構(gòu)建等內(nèi)容,感興趣的朋友跟隨小編一起看看吧

從零開始掌握 Docker:核心命令與實踐指南

摘要: 本文系統(tǒng)整理了 Docker 的核心概念與常用命令,涵蓋鏡像管理、容器操作、數(shù)據(jù)存儲、網(wǎng)絡(luò)配置、Compose 編排以及 Dockerfile 構(gòu)建等內(nèi)容。通過清晰的命令示例和實用說明,幫助開發(fā)者快速上手 Docker 容器化技術(shù),提升開發(fā)與部署效率。

關(guān)鍵詞: Docker, 容器化, 鏡像, 容器, Docker Compose, Dockerfile, 命令手冊

一、 Docker 鏡像管理

鏡像是 Docker 容器運行的基礎(chǔ)模板。

1. 搜索鏡像

在 Docker Hub 或其他注冊中心查找鏡像。

docker search nginx

2. 拉取鏡像

下載鏡像到本地倉庫。推薦指定標(biāo)簽(如 :latest:alpine)。

docker pull nginx          # 拉取最新版 (latest)
docker pull nginx:latest   # 顯式指定最新版
docker pull nginx:alpine   # 拉取 Alpine Linux 精簡版

3. 查看本地鏡像

列出所有已下載的鏡像。

docker images
docker image ls  # 等效命令

4. 刪除鏡像

移除不再需要的本地鏡像。注意: 依賴該鏡像的容器必須先刪除或停止。

docker rmi nginx:latest    # 通過倉庫名:標(biāo)簽刪除
docker rmi <鏡像ID>         # 通過唯一鏡像 ID 刪除 (更精確)

二、 Docker 容器操作

容器是鏡像的運行實例。

1. 運行容器

啟動一個新的容器實例。

docker run nginx                      # 前臺運行 (會占用終端)
docker run -d --name mynginx nginx    # 后臺運行 (-d) 并命名容器 (--name)
docker run -d --name myweb -p 8080:80 nginx  # 后臺運行,并將容器 80 端口映射到宿主機(jī) 8080 端口 (-p)
# 常用選項:
#   -d: 后臺運行 (detached mode)
#   --name: 為容器指定一個易記的名稱
#   -p <主機(jī)端口>:<容器端口>: 端口映射
#   -it: 交互模式運行 (通常與 /bin/bash 結(jié)合進(jìn)入容器)
#   -e: 設(shè)置環(huán)境變量
#   --restart=always: 容器退出時自動重啟

2. 查看容器狀態(tài)

docker ps          # 查看正在運行的容器
docker ps -a       # 查看所有容器 (包括已停止的)
docker ps -aq      # 查看所有容器的 ID (只顯示 ID, 常用于批量操作)

3. 啟動/停止/重啟容器

docker start <容器名稱|容器ID>    # 啟動已停止的容器
docker stop <容器名稱|容器ID>     # 優(yōu)雅停止運行中的容器 (發(fā)送 SIGTERM)
docker restart <容器名稱|容器ID>  # 重啟容器

4. 查看容器資源使用與日志

docker stats <容器名稱|容器ID>      # 實時查看容器的 CPU、內(nèi)存、網(wǎng)絡(luò)、磁盤等資源使用情況
docker logs <容器名稱|容器ID>       # 查看容器日志 (默認(rèn)顯示已產(chǎn)生的日志)
docker logs -f <容器名稱|容器ID>    # 持續(xù)跟蹤 (follow) 容器日志輸出 (類似 tail -f)

5. 進(jìn)入運行中的容器

在運行的容器內(nèi)啟動一個交互式 Shell(通常是 /bin/bash 或 /bin/sh)。

docker exec -it mynginx /bin/bash
# -i: 保持 STDIN 打開
# -t: 分配一個偽終端 (TTY)

6. 刪除容器

移除不再需要的容器。注意: 正在運行的容器需要先停止或使用 -f 強制刪除。

docker rm <容器名稱|容器ID>        # 刪除已停止的容器
docker rm -f <容器名稱|容器ID>     # 強制刪除運行中的容器
docker rm $(docker ps -aq)       # 批量刪除所有已停止的容器 (危險操作!)

三、 構(gòu)建與分享自定義鏡像

1. 提交容器更改創(chuàng)建新鏡像

基于一個運行中的容器的當(dāng)前狀態(tài)創(chuàng)建新的鏡像層。

docker commit -m "update index.html" mynginx mynginx:v1.0
# -m: 提交信息
# mynginx: 源容器名稱
# mynginx:v1.0: 新鏡像名稱:標(biāo)簽

2. 保存鏡像為文件

將鏡像導(dǎo)出為 .tar 文件,方便離線傳輸或備份。

docker save -o mynginx.tar mynginx:v1.0
# -o: 指定輸出文件名

3. 從文件加載鏡像

從 .tar 文件恢復(fù)鏡像到本地倉庫。

docker load -i mynginx.tar
# -i: 指定輸入文件

4. 分享鏡像到 Docker Hub (或其他注冊中心)

登錄:

docker login  # 默認(rèn)登錄 Docker Hub, 提示輸入用戶名密碼

標(biāo)記鏡像: 為本地鏡像添加符合目標(biāo)倉庫規(guī)范的名稱(通常是 <DockerHub用戶名>/<倉庫名>:<標(biāo)簽>)。

docker tag mynginx:v1.0 <你的DockerHub用戶名>/mynginx:v1.0

推送鏡像:

docker push <你的DockerHub用戶名>/mynginx:v1.0

四、 Docker 數(shù)據(jù)管理 (存儲卷 Volumes)

Docker 使用存儲卷 (Volumes) 或綁定掛載 (Bind Mounts) 來持久化容器數(shù)據(jù),避免容器刪除后數(shù)據(jù)丟失。

1. 目錄掛載 (Bind Mounts)

將宿主機(jī)上的一個具體目錄直接掛載到容器內(nèi)指定路徑。文件存在于宿主機(jī)文件系統(tǒng)上。

docker run -d -p 80:80 -v /宿主機(jī)/絕對路徑/nginxhtml:/usr/share/nginx/html --name myapp nginx
# -v /宿主機(jī)路徑:/容器路徑
  • 優(yōu)點: 直觀,方便在宿主機(jī)直接修改文件。
  • 缺點: 依賴宿主機(jī)特定目錄結(jié)構(gòu),移植性稍差。

2. 卷掛載 (Volumes)

使用 Docker 管理的命名卷掛載到容器內(nèi)路徑。卷存儲在 Docker 管理的區(qū)域 (/var/lib/docker/volumes/),與容器生命周期解耦。

docker run -d -p 80:80 -v mynginxconf:/etc/nginx -v mynginxhtml:/usr/share/nginx/html --name myapp nginx
# -v 卷名:/容器路徑
  • 優(yōu)點: 移植性好,由 Docker 管理生命周期,備份/恢復(fù)方便。
  • 缺點: 數(shù)據(jù)位置不如綁定掛載直觀。

3. 卷管理命令

docker volume ls                 # 列出所有 Docker 管理的卷
docker volume create myvolume    # 創(chuàng)建一個新的命名卷
docker volume inspect myvolume   # 查看指定卷的詳細(xì)信息 (包括其物理存儲位置 Mountpoint)
docker volume rm myvolume        # 刪除一個不再使用的卷
# 注意:刪除容器時,使用 -v 選項可以同時刪除關(guān)聯(lián)的匿名卷 (未命名的卷)。命名卷需要顯式刪除。

五、 Docker 網(wǎng)絡(luò)管理

Docker 容器默認(rèn)通過 docker0 虛擬網(wǎng)橋連接并相互隔離。

1. 查看容器網(wǎng)絡(luò)信息

docker container inspect <容器名稱|容器ID>  # 查看容器詳細(xì)信息,包括其 IP 地址、網(wǎng)關(guān)、網(wǎng)絡(luò)配置等

2. 默認(rèn)網(wǎng)絡(luò) (docker0) 的局限性

  • 容器 IP 地址在重啟或重新創(chuàng)建后可能變化。
  • 默認(rèn)網(wǎng)絡(luò)不支持通過容器名稱進(jìn)行服務(wù)發(fā)現(xiàn)(只能通過易變的 IP 地址訪問)。

3. 創(chuàng)建自定義網(wǎng)絡(luò)

自定義網(wǎng)絡(luò)解決了 docker0 的局限性:

  • 為容器提供穩(wěn)定的、可預(yù)測的 IP 地址段。
  • 支持通過容器名稱作為主機(jī)名進(jìn)行服務(wù)發(fā)現(xiàn)(容器間可以直接用名字通信)。
docker network create mynet      # 創(chuàng)建一個名為 mynet 的自定義橋接網(wǎng)絡(luò)
docker network ls               # 列出所有 Docker 網(wǎng)絡(luò)

4. 將容器連接到自定義網(wǎng)絡(luò)

docker run -d -p 8081:80 --name app1 --network mynet nginx
docker run -d -p 8082:80 --name app2 --network mynet nginx
  • 現(xiàn)在 app1 可以直接通過 ping app2 或 http://app2 訪問 app2 容器,反之亦然。
  • 使用 docker inspect app1 查看其網(wǎng)絡(luò)配置,確認(rèn)它連接到了 mynet 并獲取了 IP。

5. 刪除網(wǎng)絡(luò)

注意: 只能刪除沒有容器連接的網(wǎng)絡(luò)。

docker network rm mynet

六、 使用 Docker Compose 編排多容器應(yīng)用

Docker Compose 使用 YAML 文件 (docker-compose.yml 或 compose.yml) 定義和運行多容器 Docker 應(yīng)用。

1. 上線應(yīng)用 (啟動服務(wù))

在包含 compose.yaml 文件的目錄下運行:

docker compose -f compose.yaml up -d
# -f: 指定 Compose 文件 (默認(rèn)為 compose.yml 或 docker-compose.yml 時可省略)
# -d: 后臺運行 (detached)
# up: 創(chuàng)建并啟動所有定義的服務(wù)、網(wǎng)絡(luò)、卷
  • Compose 只會重建或重啟配置發(fā)生變化的容器(智能更新)。

2. 下線應(yīng)用 (停止并清理)

docker compose -f compose.yaml down      # 停止并移除容器、網(wǎng)絡(luò) (默認(rèn)保留卷和鏡像)
docker compose -f compose.yaml down --rmi all -v  # 停止并移除容器、網(wǎng)絡(luò),同時刪除所有相關(guān)鏡像(--rmi all)和卷(-v)
# --rmi all: 刪除 Compose 文件中定義的服務(wù)所使用的所有鏡像
# -v: 刪除 Compose 文件中定義的匿名卷和 compose 創(chuàng)建時指定的命名卷 (謹(jǐn)慎使用!)

七、 使用 Dockerfile 構(gòu)建鏡像

Dockerfile 是一個文本文件,包含構(gòu)建 Docker 鏡像所需的一系列指令。

常用 Dockerfile 指令

指令說明示例
FROM指定基礎(chǔ)鏡像。 所有構(gòu)建都以此為基礎(chǔ)。FROM openjdk:11
LABEL添加元數(shù)據(jù) (鍵值對)。 如作者、描述、版本等。LABEL maintainer="liuqi@example.com"
COPY復(fù)制文件/目錄。 從構(gòu)建上下文復(fù)制到鏡像內(nèi)。COPY ./app.jar /app/app.jar
ADD類似 COPY,但功能更多 (支持 URL、自動解壓 tar)。通常優(yōu)先用 COPY。ADD https://example.com/file.tar.gz /
WORKDIR設(shè)置工作目錄。 后續(xù)指令 (RUNCMDENTRYPOINTCOPYADD) 都在此目錄下執(zhí)行。WORKDIR /app
RUN執(zhí)行命令。 在構(gòu)建過程中運行命令并創(chuàng)建新的鏡像層。常用于安裝軟件包。RUN apt-get update && apt-get install -y curl
EXPOSE聲明運行時容器監(jiān)聽的端口。 只是一個文檔說明,實際映射需用 -p。EXPOSE 8080
ENV設(shè)置環(huán)境變量。 在構(gòu)建階段和運行階段都可用。ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk
CMD指定容器啟動時的默認(rèn)命令。 可以被 docker run 的命令覆蓋。CMD ["java", "-jar", "/app.jar"]
ENTRYPOINT指定容器啟動時的主命令。 CMD 的內(nèi)容通常作為其參數(shù)。更不易被覆蓋。ENTRYPOINT ["java", "-jar"] CMD ["/app.jar"]

示例 Dockerfile (構(gòu)建 Java 應(yīng)用鏡像)

# 使用 OpenJDK 11 官方鏡像作為基礎(chǔ)
FROM openjdk:11
# 添加維護(hù)者信息 (元數(shù)據(jù))
LABEL author="liuqi" version="1.0"
# 將構(gòu)建上下文中的 app.jar 復(fù)制到鏡像根目錄下
COPY app.jar /app.jar
# 聲明應(yīng)用運行時監(jiān)聽的端口
EXPOSE 8081
# 設(shè)置容器啟動時執(zhí)行的命令 (主進(jìn)程)
ENTRYPOINT ["java", "-jar", "/app.jar"]

構(gòu)建鏡像

在包含 Dockerfile 和 app.jar 的目錄下運行:

docker build -t myjavaapp:v1.0 .
# -t: 指定構(gòu)建出的鏡像名稱和標(biāo)簽 (myjavaapp:v1.0)
# . : 指定構(gòu)建上下文路徑 (當(dāng)前目錄),Dockerfile 和 COPY 的文件都相對于此路徑

八、 Docker 鏡像分層存儲機(jī)制

Docker 鏡像采用分層存儲 (Layer Storage) 機(jī)制,這是其高效性和輕量化的核心:

  • Union File System (聯(lián)合文件系統(tǒng)): 如 AUFS, Overlay2 等。這些文件系統(tǒng)允許將多個目錄(稱為“層”)掛載到同一個虛擬目錄下。對用戶呈現(xiàn)的是一個單一的文件系統(tǒng)視圖。
  • 只讀層 (Read-Only Layers):
    • 鏡像由一系列只讀層疊加組成。
    • 每一層代表 Dockerfile 中的一條指令(如 FROMRUNCOPYADD)所引入的文件系統(tǒng)變化。
    • 這些層是共享的。如果多個鏡像基于同一個基礎(chǔ)鏡像(如 ubuntu:latest),那么它們共享基礎(chǔ)鏡像的所有只讀層,節(jié)省磁盤空間。
  • 容器層 (Container Layer / Read-Write Layer):
    • 當(dāng)從鏡像啟動一個容器時,Docker 會在所有只讀層之上添加一個薄薄的讀寫層(通常稱為“容器層”或“可寫層”)。
    • 容器運行時的所有文件寫入操作(創(chuàng)建、修改、刪除文件)都只發(fā)生在這個讀寫層中。
    • 容器刪除時,這個讀寫層也會被丟棄(除非使用卷持久化數(shù)據(jù))。
  • 寫時復(fù)制 (Copy-on-Write - CoW):
    • 如果一個容器需要修改只讀層中的某個文件(例如修改配置文件),CoW 機(jī)制會觸發(fā):

      該文件會從底層的只讀層復(fù)制到容器的讀寫層。

      后續(xù)所有對該文件的修改都只發(fā)生在讀寫層的這個副本上

    • 底層的只讀文件保持不變。這保證了基礎(chǔ)鏡像的完整性和可共享性。
    • 只有首次修改時才復(fù)制,優(yōu)化了性能和存儲空間。

圖解:

+---------------------------------------------------+
|                  Container (myapp)                |
| +-----------------------------------------------+ |
| |             Read-Write Layer (R/W)            | | (容器層 - 存儲運行時修改)
| +-----------------------------------------------+ |
| +-----------------------------------------------+ |
| |               Read-Only Layer (n)             | | (鏡像層 - 由 `RUN apt-get install` 添加)
| +-----------------------------------------------+ |
|                     ...                          |
| +-----------------------------------------------+ |
| |               Read-Only Layer (2)             | | (鏡像層 - 由 `COPY app.jar` 添加)
| +-----------------------------------------------+ |
| +-----------------------------------------------+ |
| |               Read-Only Layer (1)             | | (鏡像層 - 由 `FROM openjdk:11` 引入的基礎(chǔ)層)
| +-----------------------------------------------+ |
+---------------------------------------------------+
        (Union Mount Point - 呈現(xiàn)為單一文件系統(tǒng)視圖)

優(yōu)勢:

  • 高效構(gòu)建: 構(gòu)建鏡像時,如果某層及其之上的層沒有變化,Docker 會直接使用緩存中的層,極大加速構(gòu)建過程。
  • 節(jié)省空間: 多個鏡像和容器共享基礎(chǔ)層。
  • 快速啟動: 啟動容器只需添加一個薄薄的讀寫層,無需復(fù)制整個文件系統(tǒng)。
  • 鏡像復(fù)用: 公共基礎(chǔ)層只需下載一次。

到此這篇關(guān)于Docker核心命令與實踐指南的文章就介紹到這了,更多相關(guān)docker命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker將鏡像打包為.tar包實現(xiàn)方法

    docker將鏡像打包為.tar包實現(xiàn)方法

    使用tar包格式進(jìn)行壓縮,方便在不同的docker主機(jī)之間進(jìn)行遷移和備份,下面這篇文章主要給大家介紹了關(guān)于docker將鏡像打包為.tar包的實現(xiàn)方法,需要的朋友可以參考下
    2024-07-07
  • Docker Swarm實現(xiàn)服務(wù)的滾動更新的示例代碼

    Docker Swarm實現(xiàn)服務(wù)的滾動更新的示例代碼

    這篇文章主要介紹了Docker Swarm實現(xiàn)服務(wù)的滾動更新的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Docker容器監(jiān)控及日志管理實現(xiàn)過程解析

    Docker容器監(jiān)控及日志管理實現(xiàn)過程解析

    這篇文章主要介紹了Docker容器監(jiān)控及日志管理實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • docker pull拉取超時的解決方案

    docker pull拉取超時的解決方案

    這篇文章主要介紹了docker pull拉取超時的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker images本地遷移的實現(xiàn)

    docker images本地遷移的實現(xiàn)

    這篇文章主要介紹了docker images本地遷移的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 詳解如何基于Docker鏡像逆向生成Dockerfile

    詳解如何基于Docker鏡像逆向生成Dockerfile

    這篇博客文章我們將通過使用一些開源工具,帶領(lǐng)您逐步解讀?Docker?鏡像并轉(zhuǎn)換為?Dockerfile?的過程,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • Docker Registry 實現(xiàn)原理、適用場景、常用操作及搭建過程

    Docker Registry 實現(xiàn)原理、適用場景、常用操作及搭建過程

    Docker Registry基于無狀態(tài)架構(gòu),支持多存儲后端與認(rèn)證方式,用于私有鏡像管理、性能優(yōu)化及CI/CD集成,提供官方鏡像、Harbor和高可用部署方案,需注意安全、存儲規(guī)劃與備份,本文給大家介紹Docker Registry 實現(xiàn)原理、適用場景、常用操作,感興趣的朋友一起看看吧
    2025-09-09
  • docker從Path值看容器啟動命令方式

    docker從Path值看容器啟動命令方式

    Docker容器的config.v2.json文件中的Path字段指定了容器啟動時要執(zhí)行的主程序(可執(zhí)行文件)的路徑,決定了容器運行時的入口點,它通常是容器文件系統(tǒng)中某個可執(zhí)行文件的絕對路徑
    2026-02-02
  • Docker環(huán)境搭建、阿里云鏡像加速、常用命令使用及說明

    Docker環(huán)境搭建、阿里云鏡像加速、常用命令使用及說明

    文章介紹了Docker的基本架構(gòu),包括容器、鏡像和倉庫的關(guān)系,詳細(xì)說明了在CentOS系統(tǒng)下Docker的安裝步驟,并講解了如何配置阿里云鏡像加速及常用的Docker命令操作
    2025-10-10
  • 阿里云CentOS 6.5 安裝Docker詳細(xì)步驟

    阿里云CentOS 6.5 安裝Docker詳細(xì)步驟

    這篇文章主要介紹了阿里云CentOS 6.5 安裝Docker的相關(guān)資料,現(xiàn)在都是云時代和大數(shù)據(jù)時代,希望大家也能跟著時代的步伐,需要的朋友可以參考下
    2016-10-10

最新評論

瓦房店市| 宁河县| 涞源县| 蚌埠市| 旺苍县| 东丰县| 石泉县| 涟水县| 虎林市| 东丰县| 黔南| 丽江市| 涟水县| 临西县| 汽车| 陵水| 灌阳县| 响水县| 上林县| 高州市| 乌鲁木齐县| 孝感市| 六盘水市| 大邑县| 依安县| 德阳市| 拉孜县| 龙井市| 吉安市| 辰溪县| 正宁县| 会同县| 梁山县| 利川市| 建阳市| 和平县| 明光市| 铅山县| 莱芜市| 彰化县| 衡阳县|