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

Docker核心知識點和常用指令(命令)速通

 更新時間:2026年04月20日 09:38:37   作者:敲上癮  
Docker是一種容器化平臺,它通過容器技術(shù)將所有依賴項打包到一個鏡像中,再通過鏡像運行一個獨立并且可移植的容器,這篇文章主要介紹了Docker核心知識點和常用指令(命令)的相關(guān)資料,需要的朋友可以參考下

前言:

本文梳理了 Docker 的核心知識點與常用命令,涵蓋鏡像管理、容器操作、數(shù)據(jù)卷、網(wǎng)絡(luò)配置、Dockerfile 編寫及 Compose 編排。適合快速查閱和日常備忘,希望能幫你提升容器化開發(fā)效率。

一、Docker 解決了什么問題?

問題Docker 的解決方式
環(huán)境不一致將應(yīng)用及其依賴打包成鏡像,保證在任何機器上行為一致
可移植性差鏡像可跨平臺運行,一次構(gòu)建,到處運行
資源隔離容器間相互隔離,沙箱運行,互不干擾
部署效率低秒級啟動,自動化部署流程更簡潔

Docker VS 虛擬機

對比項虛擬機Docker 容器
隔離級別模擬完整硬件,有獨立 OS,隔離度強共享宿主機內(nèi)核,隔離度相對弱
資源占用重,啟動慢(分鐘級)輕,啟動快(秒級)
可移植性鏡像體積大鏡像體積小,分發(fā)方便
適用場景需要強隔離或不同 OS微服務(wù)、快速部署、CI/CD

二、鏡像管理(images)

常用指令

# 拉取鏡像
docker pull 鏡像名[:標(biāo)簽]

# 查看本地鏡像
docker images

# 刪除指定鏡像(-f 強制刪除)
docker rmi [-f] 鏡像名或id

# 刪除所有未被使用的鏡像
docker image prune

離線遷移(無網(wǎng)絡(luò)環(huán)境)

# 1. 導(dǎo)出鏡像為文件
docker save -o 文件名.tar 鏡像名

# 2. 傳輸?shù)侥繕?biāo)機器(普通文件拷貝)
scp 文件名.tar root@目標(biāo)ip:目錄

# 3. 在目標(biāo)機器導(dǎo)入鏡像
docker load -i 文件名.tar

打標(biāo)簽

# 類比 cp 指令,給鏡像打一個新標(biāo)簽(原鏡像保留)
docker tag 原鏡像名[:標(biāo)簽] 新鏡像名[:標(biāo)簽]

三、容器管理(container)

運行容器

docker run [選項] 鏡像名 [命令]

常用選項:

選項說明
-p 宿主機端口:容器端口端口映射,將容器端口暴露給外部
-d后臺(守護進程)模式運行
--name 名字指定容器名稱
-e KEY=VALUE設(shè)置環(huán)境變量
--rm容器停止后自動刪除
-v 卷名或路徑:容器目錄掛載數(shù)據(jù)卷(詳見數(shù)據(jù)卷章節(jié))
--network 網(wǎng)絡(luò)名指定網(wǎng)絡(luò)模式

停止與刪除

docker stop 容器名或id          # 優(yōu)雅停止容器
docker kill 容器名或id          # 強制終止容器
docker rm 容器名或id            # 刪除容器(需先停止)
docker rm -f 容器名或id         # 強制刪除運行中的容器

查看容器

docker ps                       # 查看正在運行的容器
docker ps -a                    # 查看所有容器(含已停止)
docker logs 容器名或id          # 查看容器日志
docker logs -f 容器名或id       # 實時追蹤日志輸出
docker inspect 容器名或id       # 查看容器詳細信息

進入運行中的容器

docker exec -it 容器名或id /bin/bash
# 退出容器但不停止:Ctrl+P,Ctrl+Q
# 退出并停止:exit

四、數(shù)據(jù)卷(docker volume)

為什么需要數(shù)據(jù)卷?

  1. 數(shù)據(jù)持久化:容器默認(rèn)是臨時的,刪除后數(shù)據(jù)隨之消失。
  2. 宿主機 ↔ 容器:方便在兩者之間共享文件。
  3. 容器 ↔ 容器:多個容器掛載同一個卷即可實現(xiàn)數(shù)據(jù)共享。

三種數(shù)據(jù)卷類型

1. 管理卷(Managed Volume)

  由 Docker 統(tǒng)一創(chuàng)建和管理,存儲在 Docker 內(nèi)部目錄(如 /var/lib/docker/volumes/),可移植性強,推薦優(yōu)先使用。

docker volume create 卷名        # 創(chuàng)建卷
docker volume ls                  # 列出所有卷
docker volume inspect 卷名        # 查看卷詳情
docker volume rm 卷名             # 刪除指定卷
docker volume prune               # 刪除所有未使用的卷
# 掛載到容器
docker run [...] -v 卷名:容器目錄 鏡像名

2. 綁定卷(Bind Mount)

將宿主機上的具體目錄或文件直接掛載到容器,由用戶自己管理路徑,沒有 docker volume 系列指令。

# 掛載到容器(卷名替換為宿主機的絕對路徑)
docker run [...] -v /宿主機/路徑:容器目錄 鏡像名
# 只讀掛載(容器內(nèi)只能讀取,不能修改)
docker run [...] -v /宿主機/路徑:容器目錄:ro 鏡像名

注意:掛載時容器對應(yīng)目錄會被宿主機目錄的內(nèi)容覆蓋同步。:ro 是對容器的限制,容器內(nèi)只讀,宿主機仍可正常修改文件。

3. 臨時卷(tmpfs Mount)

數(shù)據(jù)存儲在宿主機內(nèi)存中,容器停止后數(shù)據(jù)隨之消失。適合存放敏感信息或高頻讀寫的臨時數(shù)據(jù),沒有 docker volume 系列指令。

docker run [...] --tmpfs 容器目錄 鏡像名

五、容器網(wǎng)絡(luò)(docker network)

為什么需要網(wǎng)絡(luò)?

  • 容器與容器之間通信(如 Web 服務(wù)訪問數(shù)據(jù)庫)
  • 容器與外部網(wǎng)絡(luò)通信
  • 容器與宿主機交互

四種常見網(wǎng)絡(luò)模式

模式說明
Bridge(橋接)默認(rèn)模式。Docker 創(chuàng)建虛擬網(wǎng)橋,容器通過它與外部通信,容器間可通過容器名互相訪問(同一自定義網(wǎng)絡(luò)下)
Host(宿主機網(wǎng)絡(luò))容器直接使用宿主機的網(wǎng)絡(luò)棧,無網(wǎng)絡(luò)隔離,性能最好,但端口沖突風(fēng)險高
Container(容器網(wǎng)絡(luò))與指定的另一個容器共享網(wǎng)絡(luò)命名空間,兩者共用同一個 IP
None(無網(wǎng)絡(luò))容器沒有任何網(wǎng)絡(luò)接口,完全隔離,適合純計算任務(wù)

網(wǎng)絡(luò)管理指令

docker network create 網(wǎng)絡(luò)名          # 創(chuàng)建自定義網(wǎng)絡(luò)
docker network ls                      # 列出所有網(wǎng)絡(luò)
docker network inspect 網(wǎng)絡(luò)名          # 查看網(wǎng)絡(luò)詳情
docker network rm 網(wǎng)絡(luò)名               # 刪除指定網(wǎng)絡(luò)
docker network prune                   # 刪除所有未使用的網(wǎng)絡(luò)
docker network connect 網(wǎng)絡(luò)名 容器名   # 將容器加入網(wǎng)絡(luò)
docker network disconnect 網(wǎng)絡(luò)名 容器名 # 將容器從網(wǎng)絡(luò)移除

指定網(wǎng)絡(luò)模式

# 默認(rèn):Bridge 模式,無需額外參數(shù)
docker run [...] 鏡像名

# Host 模式
docker run --network host 鏡像名

# Container 模式(共享容器 A 的網(wǎng)絡(luò),A 斷網(wǎng)則本容器也斷網(wǎng))
docker run --network container:容器A的名字 鏡像名

# None 模式
docker run --network none 鏡像名

六、鏡像制作(Dockerfile)

方式一:容器快照(不推薦用于生產(chǎn))

docker commit [選項] 容器id 鏡像名[:標(biāo)簽]

將運行中容器的當(dāng)前狀態(tài)保存為鏡像。缺點是不可復(fù)現(xiàn)、歷史不透明。

方式二:Dockerfile(推薦)

通過腳本描述鏡像的構(gòu)建過程,可版本控制、可復(fù)現(xiàn)。

常用指令

指令說明
FROM 基礎(chǔ)鏡像指定基礎(chǔ)鏡像,必須放在第一行
COPY 宿主機文件 鏡像目錄將文件從構(gòu)建上下文復(fù)制到鏡像
ADD 宿主機文件或URL 鏡像目錄COPY 的增強版:本地 .tar 壓縮包會自動解壓;支持通過 URL 拉取文件(URL 不會自動解壓)
ENV KEY=VALUE設(shè)置環(huán)境變量,可在后續(xù)指令中用 ${KEY} 引用
ARG 變量名[=默認(rèn)值]構(gòu)建時變量,僅在構(gòu)建階段有效,不會保留到鏡像中
WORKDIR 目錄設(shè)置工作目錄,后續(xù) RUN/COPY/CMD 等均在此目錄下執(zhí)行
RUN 命令構(gòu)建時執(zhí)行命令(如安裝依賴)。每條 RUN 會新增一層,建議用 && 合并減少層數(shù)
CMD 命令容器啟動時執(zhí)行的默認(rèn)命令。可被 docker run 末尾傳入的命令覆蓋
ENTRYPOINT 命令容器啟動時執(zhí)行的入口點。不會被 docker run 末尾的命令覆蓋,而是將其作為參數(shù)傳入
EXPOSE 端口聲明容器監(jiān)聽的端口(文檔用途,需配合 -p 才實際映射)
VOLUME 容器目錄聲明匿名數(shù)據(jù)卷掛載點
USER 用戶名指定后續(xù)指令和容器運行時的用戶
HEALTHCHECK定義容器健康檢查命令

CMD vs ENTRYPOINT

# 只用 CMD:啟動命令可被覆蓋
CMD ["python", "app.py"]
# docker run 鏡像名 bash  → 執(zhí)行 bash,app.py 不會啟動

# 只用 ENTRYPOINT:入口固定,docker run 后的參數(shù)追加進來
ENTRYPOINT ["python", "app.py"]
# docker run 鏡像名 --port=8080  → 執(zhí)行 python app.py --port=8080

# 兩者結(jié)合(推薦):ENTRYPOINT 定義固定入口,CMD 提供默認(rèn)參數(shù)
ENTRYPOINT ["python", "app.py"]
CMD ["--port=80"]
# docker run 鏡像名            → python app.py --port=80(使用 CMD 默認(rèn)值)
# docker run 鏡像名 --port=8080 → python app.py --port=8080(CMD 被覆蓋)

多階段構(gòu)建(Multi-stage Build)

為什么需要? 編譯型語言(如 Go、Java)在構(gòu)建時需要完整的編譯環(huán)境,但運行時只需要編譯產(chǎn)物。若把編譯工具也打包進最終鏡像,會導(dǎo)致鏡像體積龐大。

優(yōu)勢:最終鏡像只包含運行時所需文件,體積大幅縮減,安全面也更小。

# 階段一:構(gòu)建(使用完整編譯環(huán)境)
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .

# 階段二:運行(使用最小基礎(chǔ)鏡像)
FROM alpine:latest
WORKDIR /app
# 只從構(gòu)建階段復(fù)制編譯產(chǎn)物
COPY --from=builder /app/myapp .
CMD ["./myapp"]

構(gòu)建鏡像

docker build [選項] 構(gòu)建上下文路徑

# 常用選項:
# -t 鏡像名:標(biāo)簽   指定鏡像名和標(biāo)簽
# -f Dockerfile路徑  指定 Dockerfile 文件(默認(rèn)找當(dāng)前目錄的 Dockerfile)
# --no-cache        不使用緩存,強制重新構(gòu)建

# 示例
docker build -t myapp:1.0 .
docker build -f ./docker/Dockerfile -t myapp:1.0 .

七、容器編排(docker compose)

為什么需要編排?

  實際應(yīng)用往往由多個服務(wù)組成(如 Web 服務(wù) + 數(shù)據(jù)庫 + 緩存),手動逐一 docker run 不僅繁瑣,還難以管理服務(wù)間的依賴關(guān)系和網(wǎng)絡(luò)配置。Docker Compose 通過一個 YAML 文件統(tǒng)一描述和管理多容器應(yīng)用。

解決的問題

  • 一條命令啟動 / 停止整個應(yīng)用棧
  • 自動處理服務(wù)間的網(wǎng)絡(luò)與依賴順序
  • 配置即代碼,便于版本控制和團隊協(xié)作

配置文件 docker-compose.yml

version: "3.9"          # 指定 Compose 文件格式版本

services:               # 定義各個服務(wù)
  web:                  # 服務(wù)名(可自定義)
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db              # 聲明依賴,db 先于 web 啟動
    networks:
      - app-net

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: mydb
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - app-net

volumes:                # 聲明管理卷
  db-data:

networks:               # 聲明自定義網(wǎng)絡(luò)
  app-net:
    driver: bridge

常用指令

docker compose config           # 校驗并查看合并后的配置
docker compose up               # 創(chuàng)建并啟動所有服務(wù)(前臺)
docker compose up -d            # 后臺啟動
docker compose up --build       # 啟動前重新構(gòu)建鏡像
docker compose down             # 停止并刪除容器、網(wǎng)絡(luò)(數(shù)據(jù)卷默認(rèn)保留)
docker compose down -v          # 同時刪除數(shù)據(jù)卷
docker compose ps               # 查看服務(wù)狀態(tài)
docker compose logs -f          # 實時查看所有服務(wù)日志
docker compose logs -f 服務(wù)名   # 查看指定服務(wù)日志
docker compose exec 服務(wù)名 bash # 進入指定服務(wù)的容器
docker compose restart 服務(wù)名   # 重啟指定服務(wù)
docker compose pull             # 拉取所有服務(wù)的最新鏡像

附:常見使用場景示例

運行一個 Nginx 容器,映射端口 80,掛載本地 html 目錄

docker run -d --name web \
  -p 8080:80 \
  -v /my/html:/usr/share/nginx/html \
  nginx

通過 Dockerfile 構(gòu)建并運行一個 Python 應(yīng)用

FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
docker build -t myapp .
docker run -d --name app -p 5000:5000 myapp

創(chuàng)建自定義網(wǎng)絡(luò),讓兩個容器通信

docker network create app-net
docker run -d --name redis --network app-net redis
docker run -d --name web --network app-net -p 80:80 mywebapp

總結(jié)

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

相關(guān)文章

  • docker 添加端口及獲取dockerfile的方法

    docker 添加端口及獲取dockerfile的方法

    這篇文章主要介紹了docker 添加端口及獲取dockerfile的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 解決Mac Docker x509證書的問題

    解決Mac Docker x509證書的問題

    這篇文章主要介紹了解決Mac Docker x509證書的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • docker如何安裝啟動mysql8.x

    docker如何安裝啟動mysql8.x

    這篇文章主要介紹了docker如何安裝啟動mysql8.x問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • ubuntu系統(tǒng)使用docker gitlab 磁盤空間滿的問題及解決

    ubuntu系統(tǒng)使用docker gitlab 磁盤空間滿的問題及解決

    這篇文章主要介紹了ubuntu系統(tǒng)使用docker gitlab 磁盤空間滿的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • docker-compose ports和expose的區(qū)別詳解

    docker-compose ports和expose的區(qū)別詳解

    這篇文章主要介紹了docker-compose ports和expose的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • docker啟動報錯205/limit的解決方案

    docker啟動報錯205/limit的解決方案

    Dcoker啟動報錯經(jīng)常能看到 205/limit這個錯誤提示,這是告訴你linux操作系統(tǒng)的文件描述符設(shè)置的和Docker的不匹配,或者是設(shè)置的比較小了,本文介紹了docker啟動報錯205/limit的解決方案,需要的朋友可以參考下
    2024-06-06
  • docker備份linux系統(tǒng)的命令詳解

    docker備份linux系統(tǒng)的命令詳解

    這篇文章主要介紹了docker備份linux系統(tǒng)的命令寫法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Docker搭建NetBox的實現(xiàn)示例

    Docker搭建NetBox的實現(xiàn)示例

    NetBox是一個開源的數(shù)據(jù)中心基礎(chǔ)設(shè)施管理和IP地址管理平臺,本文主要介紹了Docker搭建NetBox的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • Docker容器日志占用空間過大的解決方式

    Docker容器日志占用空間過大的解決方式

    當(dāng)我們嘗試查看特定?Docker?容器的日志時,通常會使用?docker?logs?<容器名稱>?命令,,然而,有時候會發(fā)現(xiàn)控制臺持續(xù)輸出日志信息,持續(xù)時間可能相當(dāng)長,直到最終打印完成,導(dǎo)致日志積累過多,占用了系統(tǒng)磁盤空間,所以本文給大家介紹了解決方法,需要的朋友可以參考下
    2024-03-03
  • docker搭建redis哨兵集群并且整合springboot的實現(xiàn)

    docker搭建redis哨兵集群并且整合springboot的實現(xiàn)

    本文主要介紹了docker搭建redis哨兵集群并且整合springboot的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

虞城县| 德兴市| 白城市| 天峨县| 岱山县| 通许县| 宁国市| 赤城县| 公主岭市| 芜湖县| 曲阳县| 吴桥县| 孝昌县| 浙江省| 富顺县| 和平区| 郧西县| 中宁县| 玉环县| 石首市| 峨眉山市| 沾化县| 蒙山县| 手机| 西充县| 万山特区| 翁牛特旗| 永昌县| 淳化县| 贵德县| 荃湾区| 山西省| 石台县| 东乌珠穆沁旗| 棋牌| 高安市| 休宁县| 肃宁县| 盐源县| 正阳县| 江山市|