【Docker】P2 Docker環境構建準備:MacOS 與 Linux

目錄

  • 操作系統與 Docker 的兼容性分析
    • Docker 技術本質
  • MacOS 環境下的 Docker 構建
    • 1. 安裝前準備
    • 2. Docker Desktop安裝
    • 3. 鏡像加速配置
    • 高級操作:文件共享配置
  • Linux 環境下的 Docker 構建
    • 卸載歷史版本
    • 配置軟件源
    • Docker 核心組件安裝
    • 系統服務配置
    • 鏡像加速器配置
    • 應用配置
  • 跨平臺性能與特性對比分析
    • 性能大概對比
  • 總結

在這里插入圖片描述

Docker 作為現代軟件開發和部署的核心工具,已經成為 DevOps 工作流程中不可或缺的組件。然而,在不同操作系統上構建 Docker 環境存在著顯著的差異和考量因素。本博文將深入探討如何在 MacOS 和 Linux 環境中搭建高效的 Docker 環境,并對不同平臺的優劣勢進行專業分析。

操作系統與 Docker 的兼容性分析

Docker 技術本質

Docker 原生基于 Linux 內核技術,特別是依賴Linux的 namespacecgroups 機制來實現容器的隔離和資源控制。這一技術架構決定了 Docker 在不同操作系統上的表現差異:

  • Linux環境: 作為 Docker 的原生平臺,Linux 提供最直接、最高效的容器運行環境,無需額外的虛擬化層。
  • MacOS環境: 由于 MacOS 與 Linux 同源于 UNIX 系統架構,具備良好的兼容性基礎,但需要通過虛擬化技術(如HyperKit)來模擬 Linux 內核環境。
  • Windows環境: Windows WSL2 在 WSL1 的基礎上進行了重大架構改進,通過完整的 Linux 內核實現了對 Docker 的原生支持。本文基于作者 MacOS 環境,故不詳細討論 Windows WSL2 相關搭建策略。如有需,可以評論留言,可提供詳細博文說明如何安裝 WSL2 及與 Docker Desktop 關聯。

MacOS 環境下的 Docker 構建

1. 安裝前準備

在 MacOS 上搭建 Docker 環境,一般無需確認環境要求,只要是2020年后購入的電腦一般都輕松可以完成搭建。若需,可確認系統兼容性:

  • 系統要求: MacOS 10.14及以上版本
  • 硬件要求: 支持硬件虛擬化的Mac設備
  • 內存建議: 至少4GB RAM,推薦8GB以上

2. Docker Desktop安裝

訪問官方網站,點擊 “Download Docker Desktop” 下載 dmg 應用程序。

請添加圖片描述

安裝完成后,通過科學上網,讀者就可以搜索查找需要的鏡像源,比如 nginx 鏡像源,如下圖:

請添加圖片描述

同時,因為 MacOS 操作系統無需像 Windows 系統那樣配置環境變量,可在終端中輸入如下命令檢查 Docker 安裝完成。

# 驗證安裝
docker --version
docker info

也可以查看本地鏡像(Image)與容器(Container):

# 查看鏡像
docker images
docker image ls
# 查看容器
docker ps
# 查看全部容器(包括stop狀態的容器)
docker ps -a

3. 鏡像加速配置

當然,如果讀者無法科學上網,可以針對國內網絡環境,配置鏡像加速器。Docker 的配置文件通常位于 /etc/docker/daemon.json 我們需要修改這個文件,將我們的加速器地址添加進去。

# 進入到配置文件中
vim /etc/docker/daemon.json

將加速器地址添加

{"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"],"experimental": false,"debug": true
}

但是根據筆者實際操作,很多國內鏡像源也很不穩定。建議讀者還是找個有效的方式科學上網,可私聊筆者留言。

高級操作:文件共享配置

MacOS環境下的文件系統掛載是關鍵性能考量,具體內容將在后續博文用到 -v 文件掛在時給出。

# 在Docker Desktop設置中啟用VirtioFS
# 或配置緩存模式
docker run -v /host/path:/container/path:cached nginx

Linux 環境下的 Docker 構建

卸載歷史版本

確保系統環境清潔,移除潛在沖突的Docker版本:

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

配置軟件源

建立可靠的軟件包管理基礎:

# 安裝必要的軟件包管理工具
yum install -y yum-utils
# 配置Docker官方源(推薦阿里云鏡像)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Docker 核心組件安裝

# 安裝Docker完整套件
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 安裝驗證
docker --version
docker images

系統服務配置

# Docker服務管理
systemctl start docker      # 啟動服務
systemctl stop docker       # 停止服務
systemctl restart docker    # 重啟服務
systemctl enable docker     # 設置開機自啟
# 驗證服務狀態
systemctl status docker
docker ps

鏡像加速器配置

創建配置目錄

mkdir -p /etc/docker
cd /etc/docker

配置加速源

tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://jr18zzk2.mirror.aliyuncs.com","https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2"
}
EOF

應用配置

# 重載系統守護進程
systemctl daemon-reload# 重啟Docker服務
systemctl restart docker# 驗證配置生效
docker info | grep "Registry Mirrors"

跨平臺性能與特性對比分析

性能大概對比

指標LinuxMacOS優勢分析
容器啟動速度★★★★★★★★☆☆Linux原生支持,無虛擬化開銷
文件系統性能★★★★★★★★☆☆Linux直接訪問,MacOS需跨虛擬化層
內存效率★★★★★★★★☆☆Linux無額外虛擬化內存開銷
網絡性能★★★★★★★★★☆Linux原生網絡棧更高效

故,建議讀者可以基于 MacOS 充分學習 Docker 相關知識,但是如果讀者想要部署服務并持續運維監控,請應用 Linux 操作系統。


總結

總結來說,Linux 環境提供最佳的性能和生產一致性,適合專業開發和部署場景,而 MacOS 環境則在開發便利性和生態集成方面具有優勢,適合個人開發和快速迭代。

無論讀者選擇哪種平臺,正確的配置和優化都是確保 Docker 環境高效運行的關鍵。通過本博文的詳細指導,希望讀者能夠在所選擇的平臺上成功構建一個高效、穩定的 Docker 開發環境。

在實際應用中,建議根據團隊規模、項目需求和基礎設施現狀來做出最適合的技術選型,并持續關注 Docker 生態系統的發展動態,以便及時采用新的優化策略和最佳實踐。


2025.09 金融街

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

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

相關文章

OpenCV 發票識別全流程:透視變換與輪廓檢測詳解

目錄 前言 一、核心技術原理&#xff1a;透視變換與輪廓檢測 1. 透視變換&#xff1a;讓傾斜發票 “正過來” &#xff08;1&#xff09;什么是透視變換&#xff1f; &#xff08;2&#xff09;透視變換的 5 個關鍵步驟 2. 輪廓檢測&#xff1a;精準定位發票區域 &#x…

并發:使用volatile和不可變性實現線程安全

《Java并發編程實戰》中的VolatileCachedFactorizer展示了如何使用volatile和不可變性來實現線程安全。解決了簡單緩存實現中可能出現的線程安全問題&#xff0c;同時避免了全量同步帶來的性能開銷。 場景背景 假設有一個服務&#xff08;如因數分解服務&#xff09;&#xff0…

Linux x86 stability和coredump

1 POSIX pthread_create原理 1&#xff09;fork()、pthread_create()、vfork()對應的系統調用分別是sys_fork()、sys_clone()、sys_vfork()&#xff0c;它們在內核中都是通過do_fork()實現的。 2&#xff09;系統中所有的進程都組織在init_task.tasks鏈表下面&#xff0c;每個進…

【PyTorch】多對象分割

對象分割任務的目標是找到圖像中目標對象的邊界。實際應用例如自動駕駛汽車和醫學成像分析。這里將使用PyTorch開發一個深度學習模型來完成多對象分割任務。多對象分割的主要目標是自動勾勒出圖像中多個目標對象的邊界。 對象的邊界通常由與圖像大小相同的分割掩碼定義&#xf…

RabbitMQ---面試題

總結我們所學內容&#xff0c;這里推薦博客進行復習 RabbitMQ---面試題_rabbitmq常問面試題-CSDN博客

MasterGo自動布局(Auto Layout)

自動布局是用來表示 子元素與子元素之間互相影響的一種排版方式,是一種響應式布局技術。一般是將所有元素設計完成后再使用自動布局進行設置。 自動布局就是響應式布局,就是在不同尺寸的手機上寬度不同都應該怎么展示。 一般頁面的一級元素使用約束進行相對定位,二級元素及里…

還在重啟應用改 Topic?Spring Boot 動態 Kafka 消費的“終極形態”

場景描述&#xff1a; 你的一個微服務正在穩定地消費 Kafka 的 order_topic。現在&#xff0c;上游系統為了做業務隔離&#xff0c;新增加了一個 order_topic_vip&#xff0c;并開始向其中投遞 VIP 用戶的訂單。你需要在不重啟、不發布新版本的情況下&#xff0c;讓你現有的消費…

使用vllm部署neo4j的text2cypher-gemma-2-9b-it-finetuned-2024v1模型

使用vllm部署neo4j的text2cypher-gemma-2-9b-it-finetuned-2024v1模型 系統環境準備 由于使用的基于 nvcr.io/nvidia/cuda:12.1.1-cudnn8-runtime-ubuntu22.04 的 workbench,需要進行以下準備(其他系統環境可忽略) ldconfig -p | grep libcudnn 找到 libcudnn 的so庫,然…

Coze源碼分析-資源庫-創建知識庫-前端源碼-核心組件

概述 本文深入分析Coze Studio中用戶創建知識庫功能的前端實現。該功能允許用戶在資源庫中創建、編輯和管理知識庫資源&#xff0c;為開發者提供了強大的知識管理和數據處理能力。通過對源碼的詳細解析&#xff0c;我們將了解從資源庫入口到知識庫配置彈窗的完整架構設計、組件…

基于時空數據的網約車訂單需求預測與調度優化

一、引言隨著共享出行行業的蓬勃發展&#xff0c;網約車已成為城市交通的重要組成部分。如何精準預測訂單需求并優化車輛調度&#xff0c;是提升平臺運營效率、改善用戶體驗的關鍵。本文提出一種基于時空數據的網約車訂單需求預測與調度優化方案&#xff0c;通過網格化城市空間…

數據結構 Java對象的比較

在Java中&#xff0c;凡是涉及到比較的&#xff0c;可以分為兩類情況&#xff1a;一類是基本數據類型的比較&#xff0c;另一類是引用數據類型的比較。對于基本數據類型的比較&#xff0c;我們通過關系運算符&#xff08;、>、<、!、>、<&#xff09;進行它們之間的…

企智匯建筑施工項目管理系統:全周期數字化管控,賦能工程企業降本增效!?建筑工程項目管理軟件!建筑工程項目管理系統!建筑項目管理軟件企智匯軟件

在建筑施工行業&#xff0c;項目進度滯后、成本超支、質量安全隱患頻發、多方協同不暢等問題&#xff0c;一直是制約企業發展的痛點。傳統依賴人工記錄、Excel 統計的管理模式&#xff0c;不僅效率低下&#xff0c;更易因信息斷層導致決策失誤。企智匯建筑施工項目管理系統憑借…

k8s-臨時容器學習

臨時容器學習1. 什么是臨時容器2. 實驗1. 什么是臨時容器 在官網&#xff1a;https://kubernetes.io/zh-cn/docs/concepts/workloads/pods/ephemeral-containers/ 中有介紹 臨時容器是用于調試Pod中崩潰的容器或者不具備調試工具&#xff0c;比如在一個運行著業務的容器中&am…

Python 2025:低代碼開發與自動化運維的新紀元

從智能運維到無代碼應用&#xff0c;Python正在重新定義企業級應用開發范式在2025年的企業技術棧中&#xff0c;Python已經從一個"開發工具"演變為業務自動化的核心平臺。根據Gartner 2025年度報告&#xff0c;68%的企業在自動化項目中使用Python作為主要開發語言&am…

Netty 在 API 網關中的應用篇(請求轉發、限流、路由、負載均衡)

Netty 在 API 網關中的應用篇&#xff08;請求轉發、限流、路由、負載均衡&#xff09;隨著微服務架構的普及&#xff0c;API 網關成為服務之間通信和安全控制的核心組件。在構建高性能網關時&#xff0c;Netty 因其高吞吐、低延遲和異步非阻塞 IO 的特性&#xff0c;成為不少開…

基于STM32設計的青少年學習監控系統(華為云IOT)_282

文章目錄 一、前言 1.1 項目介紹 【1】項目開發背景 【2】設計實現的功能 【3】項目硬件模塊組成 【4】設計意義 【5】國內外研究現狀 【6】摘要 1.2 設計思路 1.3 系統功能總結 1.4 開發工具的選擇 【1】設備端開發 【2】上位機開發 1.5 參考文獻 1.6 系統框架圖 1.7 系統原理…

手寫Spring底層機制的實現【初始化IOC容器+依賴注入+BeanPostProcesson機制+AOP】

摘要&#xff1a;建議先看“JAVA----Spring的AOP和動態代理”這個文章&#xff0c;解釋都在代碼中&#xff01;一&#xff1a;提出問題依賴注入1.單例beans.xml<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframe…

5G NR-NTN協議學習系列:NR-NTN介紹(2)

NTN網絡作為依賴衛星的通信方式&#xff0c;需要面對的通信距離&#xff0c;通信雙方的移動速度都和之前TN網絡存在巨大差異。在距離方面相比蜂窩地面網絡Terrestrial Network通信距離從最小幾百米到最大幾十km的情況&#xff0c;NTN非地面網絡的通信距離即使是近地軌道的LEO衛…

線掃相機采集圖像起始位置不正確原因總結

1、幀觸發開始時間問題 問題描述: 由于幀觸發決定了線掃相機的開始采集圖像位置,比如正確的位置是A點開始采集,結果你從B點開始觸發幀信號,這樣出來的圖像起始位置就不對 解決手段: 軟件需要記錄幀觸發時軸的位置 1)控制卡控制軸 一般使用位置比較觸發,我們可以通過監…

校園管理系統練習項目源碼-前后端分離-【node版】

今天給大家分享一個校園管理系統&#xff0c;前后端分離項目。這是最近在練習前端編程&#xff0c;結合 node 寫的一個完整的項目。 使用的技術&#xff1a; Node.js&#xff1a;版本要求16.20以上。 后端框架&#xff1a;Express框架。 數據庫&#xff1a; MySQL 8.0。 Vue2&a…