doker centos7安裝1

1.什么是doker

Docker 是一個開源的應用容器引擎,它允許開發者將應用程序及其依賴項打包到一個可移植的容器中,然后發布到任何支持 Docker 的操作系統上,實現 “一次構建,到處運行”。

容器是一種輕量級的虛擬化技術,與傳統虛擬機不同,容器不需要模擬完整的操作系統,而是共享宿主操作系統的內核,因此啟動更快、資源占用更少。

1.1容器

容器(Container)是一種輕量級的虛擬化技術,它將應用程序及其所有依賴(如庫、配置文件、運行時環境等)打包在一起,形成一個獨立、可移植的單元。這種技術讓應用能夠在幾乎任何支持容器的環境中(無論是開發機、測試服務器還是生產服務器)以相同的方式運行,解決了 “在我這里能運行,在你那里卻不行” 的經典問題。

容器的核心特點
  1. 輕量級 容器不像傳統虛擬機那樣需要完整的操作系統副本,而是共享宿主機器的內核,只包含應用所需的運行時環境和依賴。因此,容器啟動速度極快(通常秒級),資源占用少,一臺主機可以運行成百上千個容器。

  2. 一致性 容器將應用和依賴 “打包”,確保在開發、測試、生產等不同環境中,應用的運行條件完全一致,避免因環境差異導致的問題。

  3. 隔離性 每個容器都有自己獨立的文件系統、網絡空間和進程空間,相互之間隔離,不會干擾彼此的運行。但這種隔離比虛擬機更輕量,因為它們共享底層內核。

  4. 可移植性 容器可以在任何支持容器引擎(如 Docker、containerd)的系統上運行,無論是物理機、虛擬機還是云平臺(AWS、Azure、阿里云等)。

  5. 可擴展性 基于相同的容器鏡像,可以快速復制出多個容器實例,輕松實現應用的水平擴展。

容器與傳統虛擬機的區別
特性容器傳統虛擬機(VM)
啟動速度秒級分鐘級
資源占用低(共享內核)高(完整 OS)
隔離級別進程級隔離(輕量)完全隔離(重量級)
操作系統依賴依賴宿主內核(通常 Linux)獨立 OS,與宿主無關
鏡像大小通常 MB 級通常 GB 級
容器的典型使用場景
  1. 應用部署 簡化應用發布流程,開發者打包好容器后,運維人員可直接部署,無需關心環境配置。

  2. 微服務架構 微服務將應用拆分為多個獨立服務,每個服務可打包成一個容器,便于單獨開發、部署和擴展。

  3. 持續集成 / 持續部署(CI/CD) 在自動化流程中,容器可作為構建、測試、部署的標準化單元,確保流程一致性。

  4. 開發環境標準化 團隊成員使用相同的容器鏡像,避免 “本地環境差異” 導致的開發問題。

  5. 資源優化 相比虛擬機,容器能更高效地利用服務器資源,降低硬件成本。

常用容器技術
  • Docker:最流行的容器引擎,提供了完整的容器創建、管理和分發工具。

  • containerd:從 Docker 中分離出的容器運行時,更輕量,被 Kubernetes 等廣泛采用。

  • Kubernetes(K8s):容器編排平臺,用于大規模管理容器集群(自動擴縮容、負載均衡等)。

  • Podman:無守護進程的容器引擎,兼容 Docker 命令,安全性更高。

容器技術已成為現代軟件開發和云原生架構的基礎,極大地提升了應用交付效率和系統可擴展性。如果你想深入了解,建議從 Docker 入門,體驗容器的創建和管理流程。

2.doker的公共倉庫

Docker Hub(https://hub.docker.com/),它是 Docker 官方提供的公共鏡像倉庫,也是全球最大的容器鏡像存儲庫之一。

Docker Hub 的主要功能

  1. 提供官方鏡像:包含大量常用軟件的官方鏡像,如 Nginx、MySQL、Python、Node.js 等,這些鏡像由軟件官方維護,安全性和可靠性較高。

  2. 社區貢獻鏡像:開發者可以上傳自己制作的鏡像供他人使用,涵蓋各種應用場景(如特定版本的開發環境、定制化服務等)。

  3. 鏡像版本管理:支持為鏡像標記不同版本(Tag),方便用戶選擇特定版本的鏡像。

  4. 與代碼倉庫集成:可關聯 GitHub、GitLab 等代碼倉庫,實現代碼提交后自動構建鏡像并推送到 Docker Hub。

  5. 組織和團隊管理:支持創建組織(Organization)和團隊,便于團隊協作管理私有鏡像(免費賬戶有私有鏡像數量限制)。

如何使用 Docker Hub

  1. 注冊賬號:訪問 Docker Hub 官網注冊免費賬號。

  2. 搜索鏡像:通過官網搜索框或 docker search 命令查找所需鏡像,例如 docker search nginx

  3. 拉取鏡像:使用 docker pull [鏡像名]:[版本] 命令拉取鏡像,如 docker pull nginx:latest(拉取最新版 Nginx)。

  4. 上傳鏡像:登錄后(docker login),可通過 docker push [你的用戶名]/[鏡像名]:[版本] 上傳自己的鏡像。

其他公共鏡像倉庫

除了 Docker Hub,還有一些知名的公共鏡像倉庫(部分針對特定場景或地區優化):

  • Quay.io:由 Red Hat 維護,以安全性和企業級支持著稱。

  • GitHub Container Registry(GHCR):與 GitHub 集成,方便關聯代碼倉庫管理鏡像。

  • 阿里云容器鏡像服務騰訊云容器鏡像服務等:國內云廠商提供的倉庫,訪問速度更快,適合國內用戶。

  • Google Container Registry(GCR)Amazon ECR:谷歌和亞馬遜的容器鏡像服務,適合在其云平臺上部署應用。

這些公共倉庫極大地簡化了容器化應用的分發和使用,開發者無需重復構建基礎鏡像,直接基于現有鏡像開發即可。

3.doker虛擬倉庫

Docker 的私有倉庫(Private Registry),它是用于存儲和管理私有 Docker 鏡像的服務,適合企業或團隊內部部分享和管理鏡像,確保鏡像的安全性和可控性(與公共倉庫如 Docker Hub 相對)。

私有倉庫的作用

  • 安全性:企業內部的敏感鏡像(如包含業務代碼、配置的定制化鏡像)不適合公開到公共倉庫,私有倉庫可限制訪問權限。

  • 可控性:可自主管理鏡像版本、刪除或更新鏡像,避免依賴外部倉庫的穩定性。

  • 速度優化:本地私有倉庫可減少鏡像拉取 / 推送的網絡延遲,尤其適合內部大規模部署。

  • 合規性:滿足數據本地化存儲、審計等企業合規要求。

常用的 Docker 私有倉庫方案

  1. Docker 官方私有倉庫(Docker Registry) Docker 官方提供的開源倉庫工具,輕量級且易于部署,支持基本的鏡像存儲和訪問控制。

    • 部署簡單:通過容器即可快速啟動(docker run -d -p 5000:5000 --name my-registry registry:2)。

    • 基礎功能:支持鏡像推送、拉取、刪除,可結合認證工具(如 htpasswd)實現用戶權限管理。

    • 局限性:無圖形化界面,高級功能(如鏡像掃描、細粒度權限)需額外配置。

  2. Harbor 由 VMware 開源的企業級私有倉庫,功能豐富,適合生產環境。

    • 核心特性:圖形化管理界面、角色權限控制、鏡像漏洞掃描、鏡像簽名驗證、日志審計等。

    • 部署方式:支持 Docker Compose 快速部署,也可集成到 Kubernetes 集群。

    • 適用場景:企業級鏡像管理,尤其適合微服務架構和云原生環境。

  3. 云廠商私有倉庫 各大云平臺提供的托管式私有倉庫服務,無需自行維護基礎設施:

    • 阿里云容器鏡像服務(ACR)

    • 騰訊云容器鏡像服務(TCR)

    • AWS Elastic Container Registry(ECR)

    • Google Container Registry(GCR) 優勢:與云平臺其他服務(如容器服務、CI/CD 工具)深度集成,提供高可用性和彈性擴展。

私有倉庫的基本使用流程

  1. 部署倉庫:通過上述工具搭建私有倉庫(如用 Docker Registry 在本地啟動一個倉庫)。

  2. 配置訪問

    • 若倉庫使用 HTTP(非 HTTPS),需在客戶端 Docker 配置中添加insecure-registries(如"insecure-registries":["192.168.1.100:5000"])。

    • 配置認證(如用戶名密碼),確保只有授權用戶可訪問。

  3. 使用鏡像

    • 標記鏡像:docker tag 本地鏡像名:版本 私有倉庫地址/鏡像名:版本(如docker tag nginx:latest 192.168.1.100:5000/my-nginx:v1)。

    • 推送鏡像:docker push 私有倉庫地址/鏡像名:版本

    • 拉取鏡像:docker pull 私有倉庫地址/鏡像名:版本

私有倉庫是企業 Docker 化實踐中的重要組件,可根據團隊規模、技術需求和資源情況選擇合適的方案(自建如 Harbor,或使用云托管服務)。

4.doker服務器與客戶端

在 Docker 體系中,“服務器” 和 “客戶端” 是基于 C/S(客戶端 - 服務器)架構的兩個核心組件,它們通過 Docker 守護進程(daemon)進行通信,協同完成容器的創建、管理等操作。

1. Docker 服務器(Docker Daemon)

Docker 服務器其實是運行在主機上的 Docker 守護進程(dockerd,它是后臺運行的服務程序,負責處理 Docker 相關的核心操作,比如:

  • 管理容器(創建、啟動、停止、刪除等)

  • 管理鏡像(拉取、構建、存儲等)

  • 處理網絡和存儲配置

  • 響應客戶端的請求

特點

  • 默認運行在本地主機,監聽 Unix 套接字(/var/run/docker.sock

  • 可以配置為遠程訪問(通過 TCP 端口,需注意安全設置)

  • 是 Docker 體系的 “大腦”,所有實際操作都由它執行

2. Docker 客戶端(Docker Client)

Docker 客戶端是用戶與 Docker 交互的命令行工具(docker 命令),它的作用是:

  • 接收用戶輸入的命令(如 docker rundocker pull

  • 將命令轉換為 API 請求,發送給 Docker 守護進程

  • 接收并展示守護進程返回的結果

特點

  • 無需與守護進程在同一臺機器上,可通過網絡連接遠程守護進程

  • 支持多種命令,覆蓋容器、鏡像、網絡、卷等所有 Docker 功能

  • 是用戶操作 Docker 的入口

3. 工作流程(客戶端與服務器的交互)

  1. 用戶在終端輸入 Docker 命令(如 docker run nginx

  2. 客戶端解析命令,通過 API 向本地或遠程的 Docker 守護進程發送請求

  3. 守護進程接收請求,執行實際操作(如拉取 nginx 鏡像、創建并啟動容器)

  4. 守護進程將操作結果返回給客戶端

  5. 客戶端將結果展示給用戶

4. 遠程連接配置(客戶端連接遠程服務器)

默認情況下,客戶端僅連接本地守護進程。若需連接遠程 Docker 服務器,需配置:

服務器端(守護進程)配置:
  1. 編輯 Docker 配置文件(通常是/etc/docker/daemon.json),添加遠程訪問端口:

    {"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
    }
  2. 重啟 Docker 服務:systemctl restart docker

客戶端配置:

通過環境變量指定遠程服務器地址:

# 臨時生效
export DOCKER_HOST=tcp://遠程服務器IP:2375
?
# 執行命令(此時操作會作用于遠程服務器)
docker ps

注意:直接開放 TCP 端口存在安全風險,生產環境建議配置 TLS 加密認證。

總結

  • Docker 服務器(守護進程):后臺服務,負責實際的容器和鏡像管理。

  • Docker 客戶端:命令行工具,負責接收用戶指令并與服務器通信。

  • 兩者通過 API 交互,既可以在同一臺機器工作,也可以通過網絡遠程協作,這為跨主機管理容器提供了靈活性。

5,doker的鏡像與容器

Docker 中的鏡像(Image)容器(Container) 是兩個核心概念,兩者關系密切但又有本質區別,理解它們的關系是掌握 Docker 的關鍵。

1. 鏡像(Image):容器的 “模板”

鏡像可以理解為一個只讀的模板,包含了運行應用所需的所有內容:代碼、運行時環境、庫、環境變量、配置文件等。它是創建容器的基礎。

鏡像的特點:
  • 只讀性:鏡像一旦構建完成,就無法修改(只能創建新的鏡像層)。

  • 分層存儲:鏡像采用分層文件系統(如 UnionFS),每一層都包含文件系統的修改,多層疊加形成完整鏡像。這種設計讓鏡像復用、版本控制更高效(不同鏡像可共享相同層)。

  • 可分發:鏡像可以被打包、存儲在倉庫(如 Docker Hub),并能被分發到任何支持 Docker 的環境。

常見操作:
  • 拉取鏡像:docker pull [鏡像名]:[版本](如 docker pull ubuntu:20.04

  • 查看本地鏡像:docker imagesdocker image ls

  • 構建鏡像:通過 Dockerfile 定義鏡像內容,執行 docker build -t [鏡像名]:[版本] . 構建

  • 刪除鏡像:docker rmi [鏡像ID/名稱]

2. 容器(Container):鏡像的 “運行實例”

容器是鏡像的運行實例,是一個獨立的可執行單元。它在鏡像的基礎上添加了一個可寫層,所有運行時的修改(如文件創建、配置變更)都發生在這一層。

容器的特點:
  • 可讀寫:容器在鏡像只讀層之上新增可寫層,允許運行時修改。

  • 動態性:可以被創建、啟動、停止、暫停、刪除,狀態會隨操作變化。

  • 隔離性:每個容器有獨立的進程空間、網絡、文件系統(基于鏡像層 + 可寫層),與其他容器和宿主隔離。

常見操作:
  • 創建并啟動容器:docker run [選項] [鏡像名](如 docker run -it ubuntu:20.04 /bin/bash 啟動交互式容器)

  • 查看運行中容器:docker ps;查看所有容器(包括停止的):docker ps -a

  • 啟動 / 停止容器:docker start [容器ID/名稱] / docker stop [容器ID/名稱]

  • 進入容器:docker exec -it [容器ID/名稱] /bin/bash(在運行中的容器內執行命令)

  • 刪除容器:docker rm [容器ID/名稱]

3. 鏡像與容器的關系

可以用 “類與對象” 的關系類比:

  • 鏡像 = 類(Class):是靜態的模板,定義了 “是什么”。

  • 容器 = 對象(Object):是動態的實例,是 “運行起來的鏡像”。

工作流程示例

  1. 從倉庫拉取 nginx 鏡像(docker pull nginx)—— 獲得一個 “nginx 模板”。

  2. 基于該鏡像創建容器(docker run -d nginx)—— 啟動一個運行中的 nginx 服務實例。

  3. 容器運行時,若修改了配置文件(如 /etc/nginx/nginx.conf),修改會保存在容器的可寫層,不影響原始鏡像。

  4. 若想將修改固化為新鏡像,可通過 docker commit [容器ID] [新鏡像名] 生成新鏡像(但更推薦用 Dockerfile 構建,便于維護)。

4. 核心區別總結

維度鏡像(Image)容器(Container)
狀態靜態(只讀)動態(可讀寫,有生命周期)
作用作為容器的模板運行應用程序
存儲多層只讀文件系統鏡像層 + 一層可寫層
生命周期長期存在(除非主動刪除)隨啟動 / 停止 / 刪除而變化

簡單來說:鏡像用來 “打包” 應用,容器用來 “運行” 應用。理解這一點,就能更好地掌握 Docker 的使用邏輯。

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

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

相關文章

自動化面試題

1、什么是測試套件測試套件是多個測試用例的集合。2、搭建接口自動化框架中,你遇到最大的難點是什么,以及怎么解決的?測試數據動態管理難點:接口依賴動態參數(如Token、訂單ID),數據無法硬編碼.解決方案:使用關聯提取(如正則提取響應中的Tok…

【Linux】LVS(Linux virual server)環境搭建

一、LVS的運行原理1.1 LVS簡介LVS:Linux Virtual Server,負載調度器,內核集成,章文嵩,阿里的四層SLB(Server LoadBalance)是基于LVSkeepalived實現LVS 官網: http://www.linuxvirtualserver.org/ LVS 相關術語 VS: Virtual Server…

算法競賽備賽——【圖論】求最短路徑——Dijkstra

Dijkstra 用來計算從一個點到其他所有點的最短路徑的算法&#xff0c;是一種單源最短路徑算法。也就是說&#xff0c;只能計算起點只有一個的情況。Dijkstra的時間復雜度是O (|v|^2)&#xff0c;它不能處理存在負邊權的情況。 鄰接矩陣存圖 #include<iostream> using …

影刀 RPA:批量修改 Word 文檔格式,高效便捷省時省力

在日常辦公和文檔處理中&#xff0c;Word 文檔格式的統一和規范是許多企業和個人用戶的重要需求。無論是撰寫報告、制作提案&#xff0c;還是整理資料&#xff0c;都需要確保文檔格式的一致性。然而&#xff0c;手動修改多個 Word 文檔的格式不僅耗時費力&#xff0c;還容易因疏…

GitLab 社區版 10.8.4 安裝、漢化與使用教程

一、GitLab 安裝 GitLab 提供了集成所需軟件的 RPM 包&#xff0c;簡化了安裝流程。我們選擇安裝社區版&#xff08;CE&#xff09;10.8.4&#xff0c;可通過官方網站或國內鏡像源&#xff08;如清華鏡像&#xff09;獲取安裝包。 1. 準備工作 首先創建工具目錄并進入&#…

[硬件電路-64]:模擬器件 -二極管在穩壓電路中的應用

二極管在穩壓電路中的應用主要基于其單向導電性和特定類型二極管&#xff08;如穩壓二極管&#xff09;的電壓穩定特性。以下是詳細解釋&#xff1a;一、普通二極管的穩壓作用&#xff08;有限場景&#xff09;正向導通壓降的利用&#xff1a;原理&#xff1a;普通二極管在正向…

【Linux】重生之從零開始學習運維之Nginx

安裝apt/yum安裝apt imstall nginx yum install nginxRocky源碼編譯安裝基礎編譯環境yum install gcc make gcc-c glibc glibc-devel pcre pcre-devel openssl openssldevel systemd-devel zlib-devel yum install libxml2 libxml2-devel libxslt libxslt-devel php-gd gd-deve…

主流 MQ 的關鍵性能指標

常用消息隊列&#xff08;MQ&#xff09;的“數量級”通常圍繞吞吐量&#xff08;TPS&#xff0c;每秒處理消息數&#xff09;、消息堆積能力、延遲三個核心指標展開&#xff0c;不同MQ因設計目標&#xff08;高吞吐、低延遲、高可靠等&#xff09;不同&#xff0c;數量級差異顯…

[NIPST AI]對抗性機器學習攻擊和緩解的分類和術語

原文link&#xff1a;https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.100-2e2025.pdf Introduction 人工智能&#xff08;AI&#xff09;系統在過去幾年中持續全球擴展。這些系統正在被眾多國家開發并廣泛部署于各自的經濟體系中&#xff0c;人們在生活的許多領域都獲得了更多使…

[深度學習] 大模型學習3上-模型訓練與微調

在文章大語言模型基礎知識里&#xff0c;模型訓練與微調作為大語言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;應用構建的主要方式被簡要提及&#xff0c;本系列文章將從技術原理、實施流程及應用場景等維度展開深度解析。相關知識的進一步參考見&#x…

Claude Code 啟動提示 Note: Claude Code might not be available in your country. 解決

如下圖所示 主播參考了在別的地方看來的解決方案&#xff08;并非主播不想標注來源&#xff0c;主要是忘記是哪里看來的了&#xff0c;下班就忘記了&#xff0c;懶得找了&#x1f62d;&#xff0c;如果后續找到會補上的&#xff09;。 好了&#xff0c;開始正文&#xff0c;開始…

Unity VR多人手術系統恢復3:Agora語音通訊系統問題解決全記錄

&#x1f3af; 前言 這是一個Unity多人VR手術模擬項目&#xff0c;已經擱置了近兩年時間。最近重新啟動了這個項目&#xff0c;然而在恢復過程中卻遇到了些的技術障礙。 項目重啟遇到的挑戰 當我們重新部署和測試系統時&#xff0c;發現原本運行良好的Agora語音通訊功能完全…

sqli-labs靶場通關筆記:第46-53關 order by注入

目錄 第46關 order by注入 第47關 閉合的order by注入 第48關 無報錯回顯的數字型order by注入 第49關 無報錯回顯的閉合型order by注入 第50關 基于order by的堆疊注入 第51關 閉合的報錯注入或堆疊注入 第52關 數字型盲注或堆疊注入 第53關 閉合的盲注或堆疊注入 第…

cdh6.3.2的hive使用apache paimon格式只能創建不能寫報錯的問題

前言根據官網paimon安裝教程&#xff0c;看上去簡單&#xff0c;實則報錯阻礙使用的信心。 解決方法原帶的jars下的zstd開頭的包舊了&#xff0c;重新下載zstd較新的包單獨放到每個節點的hive/lib下;然后將hdfs yarn用戶下的mr-framework.tar.gz中的zstdjar包替換成新的版本。重…

【Vue進階學習筆記】實現圖片懶加載

創建Vue項目 首先確保你已安裝Vue CLI&#xff0c;然后創建一個新的Vue 3項目&#xff1a; npm init vuelatest安裝依賴 安裝vueuse/core庫&#xff0c;它提供了useIntersectionObserver組合式API&#xff1a; cnpm install cnpm install vueuse/core創建指令文件夾和文件 在sr…

深入理解 synchronized

深入理解 synchronized 引言&#xff1a;synchronized的核心地位 在Java并發編程中&#xff0c;synchronized關鍵字是實現線程安全的基石。自JDK 1.0引入以來&#xff0c;它經歷了從"重量級鎖"到"自適應鎖"的進化&#xff0c;如今已成為兼顧安全性與性能的…

C語言字符串相關函數

C語言筆記內容提要數組字符串基本操作字符串相關函數綜合案例&#xff1a;學生成績管理系統數組字符串基本操作在用格式化說明符%s進行輸入輸出時&#xff0c;其輸入輸出項均為數組名。但在輸入時&#xff0c;相鄰兩個字符串之間要用空格分隔&#xff0c;系統將自動在字符串后加…

從零開始:用Python庫輕松搭建智能AI代理

為什么要關注AI代理&#xff1f; “Agentic AI”&#xff08;智能代理&#xff09;正在悄然改變我們的工作方式。想象一下&#xff0c;一個AI助手不僅能幫你查航班、訂機票&#xff0c;還能自動安排行程、發郵件、生成日報——就像一個效率極高的“虛擬助理”團隊。 對于測試工…

如何防止GitHub上的敏感信息被泄漏?

如大家所了解的&#xff0c;隨著GitHub的用戶越來越多&#xff0c;GitHub上的敏感信息被泄漏的問題也越來越嚴重。那么如何做&#xff0c;才能防止此類事情發生呢&#xff1f;這值得我們探討。移除并刪除敏感信息當我們發現了歷史 commit 中包含敏感信息后&#xff0c;第一步便…

船舶機械零件的深孔工藝及檢測方法 —— 激光頻率梳 3D 輪廓檢測

引言船舶機械零件中的深孔結構&#xff08;深徑比&#xff1e;15:1&#xff09;直接影響動力系統可靠性&#xff0c;如柴油機缸體深孔、推進軸系潤滑油孔等。此類深孔具有孔徑大&#xff08;φ10 - 50mm&#xff09;、深度深&#xff08;500 - 2000mm&#xff09;、表面質量要求…