【KWDB 創作者計劃】_上位機知識篇---Docker容器


文章目錄

  • 前言
  • 1. Docker 容器是什么?
    • 隔離性
    • 輕量級
    • 可移植性
    • 可復用性
  • 2. Docker 核心概念
    • 鏡像
    • 容器
    • 倉庫
    • Dockerfile
  • 3. Docker 基本使用
    • (1) 安裝 Docker
    • (2) 容器生命周期管理
    • (3) 鏡像管理
    • (4) 進入容器內部
    • (5) 數據持久化(掛載卷)
    • (6) 網絡管理
  • 4. Dockerfile 示例
  • 5. Docker 典型使用場景
    • 快速部署應用
    • 微服務架構
    • CI/CD流水線
    • 開發環境隔離
  • 6. 常見問題
    • 權限問題
    • 清理資源
    • 查看日志
  • 總結


前言

本文簡單介紹了Docker容器的概念以及使用。


1. Docker 容器是什么?

Docker 容器是一種輕量級、可移植的虛擬化技術,允許開發者將應用程序及其依賴環境打包成一個獨立的運行單元。容器基于 Docker 鏡像運行,具有以下特點:

隔離性

隔離性:每個容器運行在獨立的用戶空間,互不干擾(基于 Linux 的 cgroups 和 namespaces)。

輕量級

輕量級:與虛擬機(VM)相比,容器共享主機 OS 內核,無需額外運行完整的操作系統,啟動更快、占用資源更少。

可移植性

可移植性:容器可以在任何支持 Docker 的環境中運行(開發、測試、生產環境一致)。

可復用性

可復用性:容器鏡像可以存儲在倉庫(如 Docker Hub)中,供他人下載使用

2. Docker 核心概念

鏡像

鏡像(Image) 只讀模板,包含運行容器所需的代碼、庫、環境變量等(如 ubuntu:20.04)。

容器

容器(Container) 鏡像的運行實例,具有可寫層(存儲運行時數據)。

倉庫

倉庫(Registry) 存儲鏡像的服務,如 Docker Hub(公共倉庫)或私有倉庫(如 Harbor)。

Dockerfile

Dockerfile 文本文件,定義如何構建鏡像(通過 docker build 命令)。

3. Docker 基本使用

(1) 安裝 Docker

Linux(Ubuntu):
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
Windows/macOS:下載 Docker Desktop。驗證安裝:
docker --version  # 查看版本
docker run hello-world  # 運行測試容器

(2) 容器生命周期管理

命令 作用

docker run <鏡像>	創建并啟動容器(如 docker run nginx)
docker start <容器ID>	啟動已停止的容器
docker stop <容器ID>	停止運行中的容器
docker restart <容器ID>	重啟容器
docker rm <容器ID>	刪除容器
docker ps	查看運行中的容器(加 -a 顯示所有)

示例:

docker run -d -p 80:80 --name my_nginx nginx  # 后臺運行Nginx并映射端口80
docker ps  # 查看容器
docker stop my_nginx  # 停止容器

(3) 鏡像管理

命令 作用

docker pull <鏡像名>	下載鏡像(如 docker pull ubuntu)
docker images	查看本地鏡像
docker rmi <鏡像ID>	刪除鏡像
docker build -t <鏡像名> .	通過 Dockerfile 構建鏡像(需在Dockerfile所在目錄運行)

示例:

docker pull alpine:latest  # 下載Alpine Linux鏡像
docker images  # 列出鏡像
docker rmi alpine  # 刪除鏡像

(4) 進入容器內部

docker exec -it <容器ID> /bin/bash  # 交互式進入容器
參數說明:
-i:保持交互式輸入。
-t:分配偽終端(TTY)。
/bin/bash:啟動Shell(根據鏡像可能為 /bin/sh)。

(5) 數據持久化(掛載卷)

容器默認是臨時存儲,重啟后數據丟失。需通過卷(Volume)或綁定掛載持久化數據:

docker run -v /宿主機路徑:/容器路徑 <鏡像>  # 綁定掛載
docker run -v 卷名:/容器路徑 <鏡像>        # 使用Docker卷
示例:
docker run -v /home/user/data:/var/www/html nginx  # 掛載主機目錄

(6) 網絡管理

命令 作用

docker network ls	查看網絡列表
docker network create	創建自定義網絡
docker run --network	指定容器網絡(如 --network=host 使用主機網絡)

示例:

docker network create my_net  # 創建網絡
docker run --network=my_net --name app1 my_app  # 容器使用自定義網絡

4. Dockerfile 示例

通過 Dockerfile 自定義鏡像:

# 基于Ubuntu鏡像
FROM ubuntu:20.04# 安裝依賴
RUN apt update && apt install -y python3# 復制本地文件到容器
COPY app.py /app/
# 設置工作目錄
WORKDIR /app
# 定義啟動命令
CMD ["python3", "app.py"]
構建鏡像:
docker build -t my_python_app .

5. Docker 典型使用場景

快速部署應用

快速部署應用:**一鍵運行數據庫(MySQL)、Web服務器(Nginx)**等。

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7

微服務架構

微服務架構:每個服務運行在獨立容器中,通過網絡通信。

CI/CD流水線

CI/CD 流水線:在容器中運行測試和構建,確保環境一致。

開發環境隔離

開發環境隔離:避免“在我機器上能運行”問題。

6. 常見問題

權限問題

權限問題:在 Linux 上,非 root 用戶需加入 docker 組

sudo usermod -aG docker $USER

清理資源

清理資源:

docker system prune  # 刪除無用鏡像、容器、網絡

查看日志

查看日志:

docker logs <容器ID>

總結

Docker 容器通過標準化環境,極大提升了開發、部署的效率
核心步驟:
1.拉取鏡像 → 2. 運行容器 → 3. 管理生命周期 → 4. 自定義鏡像(Dockerfile) → 5. 持久化數據/配置網絡。
掌握這些基礎操作后,可進一步學習 Docker Compose(多容器編排)和 Kubernetes(容器集群管理)。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77521.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77521.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77521.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

樹莓派練習

1.守護進程 守護進程含義&#xff1a;守護進程在樹莓派上電后開始運行&#xff0c;斷電后結束運行的進程&#xff0c;即使你的終端退出也不會停止&#xff0c;我們可以手動關閉它 使用nohup創建守護進程 先創建一個c語言文件&#xff08;long_task.c&#xff09; #include …

詳細解釋瀏覽器是如何渲染頁面的?

渲染流程概述 渲染的目標&#xff1a;將HTML文本轉化為可以看到的像素點 當瀏覽器的網絡線程收到 HTML 文檔后&#xff0c;會產生一個渲染任務&#xff0c;并將其傳遞給渲染主線程的消息隊列。在事件循環機制的作用下&#xff0c;渲染主線程取出消息隊列中的渲染任務&#xff0…

java+postgresql+swagger-多表關聯insert操作(九)

入參為json&#xff0c;然后根據需要對多張表進行操作&#xff1a; 入參格式&#xff1a; {"username": "車主01","usertel": "11111111111","useridtype": "2","useridcard": null,"proname&qu…

JavaSpring 中使用 Redis

創建項目 配置 Redis 服務地址 創建 Controller 類 由于當前只是些簡單的測試代碼&#xff0c;所以就不進行分層了&#xff0c;只創建一個 Controller 來實現 jedis 通過 jedis 對象里的各種方法來操作 Redis 此處通過 StringRedisTemplate 來操作 Redis 最原始提供的類是 Re…

AI文生圖工具推薦

一、AI文生圖技術實現原理 AI文生圖&#xff08;Text-to-Image&#xff09;基于生成對抗網絡&#xff08;GAN&#xff09;或擴散模型&#xff08;Diffusion Model&#xff09;實現&#xff0c;通過深度學習將文本描述轉化為圖像。其核心流程包括&#xff1a; 文本編碼&#xf…

數據結構——快排和歸并排序(非遞歸)

快速排序和歸并排序一般都是用遞歸來實現的&#xff0c;但是掌握非遞歸也是很重要的&#xff0c;說不定在面試的時候面試官突然問你快排或者歸并非遞歸實現&#xff0c;遞歸有時候并不好&#xff0c;在數據量非常大的時候效率就不好&#xff0c;但是使用非遞歸結果就不一樣了&a…

【筆記】網絡安全管理

計算機硬件中,運算器和控制器通常集成在一塊芯片內,一般稱為()。 數據庫DB、數據庫系統DBS、數據庫管理系統DBMS,三者之間的關系是()。 OSI/RM體系結構中的網絡層與TCP/IP體系結構中的()功能相同。 三級系統應按照等保2.0要求采用密碼技術通信過程中數據的()。 …

.net core web api 數據驗證(DataAnnotations)

目錄 一、什么是 DataAnnotations&#xff1f; 二、擴展驗證邏輯&#xff08;自定義驗證器&#xff09; 一、什么是 DataAnnotations&#xff1f; DataAnnotations 是一組特性&#xff08;Attributes&#xff09;&#xff0c;用于在模型類上定義驗證規則。主要用于屬性級別的…

小白從0學習網站搭建的關鍵事項和避坑指南

以下是針對小白從零學習網站搭建時需要注意的關鍵事項和避坑指南&#xff0c;幫助你高效學習、少走彎路&#xff1a; 一、學習路徑注意事項 不要跳過基礎 誤區&#xff1a;直接學習框架&#xff08;如 React、Laravel&#xff09;而忽視 HTML/CSS/JS 基礎。 正確做法&#xff…

深入剖析JavaScript內存泄漏:識別、定位與實戰解決

在JavaScript的世界里&#xff0c;開發者通常不必像使用C那樣手動管理內存的分配和釋放&#xff0c;這得益于JavaScript引擎內置的垃圾回收&#xff08;Garbage Collection, GC&#xff09;機制。然而&#xff0c;這并不意味著我們可以完全忽視內存管理。“自動"不等于&qu…

2025-04-19 Python 強類型編程

文章目錄 1 方法標注1.1 參數與返回值1.2 變參類型1.3 函數類型 2 數據類型2.1 內置類型2.2 復雜數據結構2.3 類別選擇2.4 泛型 3 標注方式3.1 注釋標注3.2 文件標注 4 特殊情形4.1 前置引用4.2 函數標注擴展4.3 協變與逆變4.4 dataclass 5 高級內容5.1 接口5.2 泛型的協變/逆變…

ETF價格相關性計算算法深度分析

1. 引言 在金融市場中&#xff0c;相關性就像是資產之間“跳舞”的默契程度。想象一下兩位舞者&#xff08;ETF&#xff09;&#xff0c;有時步伐一致&#xff0c;有時各跳各的。對于管理大規模資金的投資組合而言&#xff0c;準確理解ETF之間的“舞步同步性”對于風險管理、資…

上海人工智能實驗室:LLM無監督自訓練

&#x1f4d6;標題&#xff1a;Genius: A Generalizable and Purely Unsupervised Self-Training Framework For Advanced Reasoning &#x1f310;來源&#xff1a;arXiv, 2504.08672 &#x1f31f;摘要 &#x1f538;推進LLM推理技能引起了廣泛的興趣。然而&#xff0c;當前…

【WPF】 在WebView2使用echart顯示數據

文章目錄 前言一、NuGet安裝WebView2二、代碼部分1.xaml中引入webview22.編寫html3.在WebView2中加載html4.調用js方法為Echarts賦值 總結 前言 為了實現數據的三維效果&#xff0c;所以需要使用Echarts&#xff0c;但如何在WPF中使用Echarts呢&#xff1f; 一、NuGet安裝WebV…

2025年3月 Python編程等級考試 2級真題試卷

2025年3月青少年軟件編程Python等級考試&#xff08;二級&#xff09;真題試卷 題目總數&#xff1a;37 總分數&#xff1a;100 選擇題 第 1 題 單選題 老師要求大家記住四大名著的作者&#xff0c;小明機智地想到了可以用字典進行記錄&#xff0c;以下哪個選項的字典…

6. 話題通信 ---- 使用自定義msg,發布方和訂閱方cpp,python文件編寫

1)在功能包下新建msg目錄&#xff0c;在msg目錄下新建Person.msg,在Person.msg文件寫入&#xff1a; string name uint16 age float64 height 2)修改配置文件 2.1) 功能包下package.xml文件修改 <build_depend>message_generation</build_depend><exec_depend…

多線程使用——線程安全、線程同步

一、線程安全 &#xff08;一&#xff09;什么是線程安全問題 多個線程&#xff0c;同時操作同一個共享資源的時候&#xff0c;可能會出現業務安全的問題。 &#xff08;二&#xff09;用程序摹擬線程安全問題 二、線程同步 &#xff08;一&#xff09;同步思想概述 解決線…

4. 話題通信 ---- 發布方和訂閱方cpp文件編寫

本節對應趙虛左ROS書籍的2.1.2 以10hz,發布消息和消息的訂閱 1) 在功能包的src文件夾下&#xff0c;新建cpp文件&#xff0c;并且寫入 #include "ros/ros.h" #include "std_msgs/String.h" int main(int argc, char *argv[]) {setlocale(LC_ALL,"&…

有哪些哲學流派適合創業二

好的&#xff0c;讓我們更深入地探討如何將?哲學與數學?深度融合&#xff0c;構建一套可落地的創業操作系統。以下從?認知框架、決策引擎、執行算法?三個維度展開&#xff0c;包含具體工具和黑箱拆解&#xff1a; ?一、認知框架&#xff1a;用哲學重構商業本質? 1. ?本體…

【后端】【python】Python 爬蟲常用的框架解析

一、總結 Python 爬蟲常用的框架主要分為 三類&#xff1a; 輕量級請求庫&#xff1a;如 requests、httpx&#xff0c;用于快速發請求。解析與處理庫&#xff1a;如 BeautifulSoup、lxml、pyquery。爬蟲框架系統&#xff1a;如 Scrapy、pyspider、Selenium、Playwright 等&am…