開發環境搭建-4:WSL 配置 docker 運行環境

在 WSL 環境中構建:WSL2 (2.3.26.0) + Oracle Linux 8.7 官方鏡像

基本概念說明

容器技術

利用 Linux 系統的 文件系統(UnionFS)、命名空間(namespace)、權限管理(cgroup),虛擬出一個獨立于主系統的文件系統(文件、網絡、權限與主機相互獨立),由于 Linux 系統一切均基于文件,因此這樣就可實現多個虛擬環境在同一主機上的運行

  1. 容器技術 VS 虛擬機 VS 實機運行
    1. 實機運行 = 軟件直接在硬件上運行
      直接運行在硬件上效率高,但靈活度太低、硬件成本高
    2. 虛擬機 = 利用計算機硬件的功能,虛擬化一個完整的系統
      安全,虛擬系統支持的種類多,但虛擬系統負責運行效率低
    3. 容器技術 = 共用系統底層,利用系統實現不同容器、容器與主機間的隔離
      運行效率高、靈活性高
  2. 重要概念
    1. 容器 Container:每個獨立劃分的空間,里邊包含了獨立的文件系統,稱為容器,鏡像在其中運行
    2. 源 Registry:管理鏡像的倉庫
    3. 鏡像 Image:可以將現有的容器打包 / 使用構建工具創建鏡像,便于分發部署
  3. 容器技術的未來
    1. 容器進一步發展,從單一服務器擴展到整個集群、多個集群都使用容器構建系統,此時 docker 就力不從心了,需要更高級的專門系統,進行集群級的容器管理
      --> 容器編排系統,如 k8s,OpenShift 等
      參考資料:https://www.thebyte.com.cn/architecture/container.html

容器運行時

粗略的來說,容器運行時 = 控制容器的管理軟件 + 提供外界管理的界面(命令行、API 等)
常見的容器運行時有:

  1. docker:容器的創始者,應用廣泛,但運行時需要 root 權限,不夠安全
  2. podman:redhat 改進的容器運行時,是 centos 預裝的運行時,無需 root 權限更安全
  3. k8s:實際上是容器編排軟件(容器編排 = 利用計算機自動化實現集群級大量容器的管理)

這里選用比較常見的 docker 運行時

安裝 docker 流程

參考資料(清華 docker-ce 源):https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/

清理沖突軟件、舊版軟件

容器運行時不能相互共存。即:如果要安裝 docker,則需要卸載 podman 等其他運行時
同一運行時的不同版本不能互存。如:如果要安裝新版 docker,則需要刪除原來存在的舊版

卸載沖突軟件(以 podman 為例)

  1. 查詢是否安裝了 podman 相關軟件

    sudo rpm -qa | grep podman
    

    若指令執行有相關輸出,則這些軟件是 podman 相關的軟件

  2. 卸載 podman(如果上面查詢到安裝了相關軟件)

    1. 將 podman 中所有容器停止

      podman stop $(podman ps -aq)
      
    2. 將 podman 中所有容器刪除

      podman rm -f $(podman ps -aq)
      
    3. 將 podman 中所有鏡像刪除

      podman rmi $(podman images -q)
      
    4. 刪除 podman 軟件及工具鏈

      sudo dnf uninstall -y podman podman-docker buildah skopeo
      

卸載原版docker

如果原來安裝過 docker,需要將原版 docker 先卸載
yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

安裝docker

配置 docker 倉庫

這里第 3 步是關鍵,將原來的官方地址替換為清華源地址,實現 docker 軟件安裝時的加速
sudo yum install -y yum-utils
# 配置原版倉庫地址
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 替換為清華源地址
sudo sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo

安裝 docker

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置 docker 服務

注意:docker 相關指令,都需要 root 權限。root 權限配置可參考我的文章《配置 WSL (類 centos 的 oracle linux 官方鏡像)》

安裝完成后,docker 服務默認未啟動、且開機不自啟,這里設置為開機啟動、并直接啟動

# 設置 docker 開機啟動
sudo systemctl enable dockerd# 啟動 docker 服務
sudo systemctl start docker

若之后想控制 docker 的啟動/停止/重啟,設置/取消開機自啟,可執行以下指令

# 啟動/停止/重啟 docker
# 一般修改 docker 配置后,都需要重啟 docker 服務使配置生效
sudo systemctl start/stop/restart docker# 設置/取消 docker 開機自啟
sudo systemctl enable/disable docker

配置 docker 國內鏡像倉庫加速

  • docker 安裝加速(前面介紹的):docker 軟件本身安裝的加速
  • docker 鏡像倉庫加速(這一節介紹的):使用 docker 下載容器鏡像時的加速

通用配置如下
參考文章:https://blog.csdn.net/liuxin_hello/article/details/139654089

# 1. 打開 docker 配置文件
sudo vim /etc/docker/daemon.json# 在配置文件中添加以下內容
{  "registry-mirrors": [  "https://registry.docker-cn.com",  "http://hub-mirror.c.163.com",  "https://docker.mirrors.ustc.edu.cn"  // 可以繼續添加其他鏡像源地址....]  
}

這里配置 daocloud.io 的加速
daocloud 鏡像加速地址詳情:https://github.com/DaoCloud/public-image-mirror
!!!感謝 dcaocloud 等國內公益鏡像加速服務提供者!!!


# 1. 打開 docker 配置文件
sudo vim /etc/docker/daemon.json# 在配置文件中添加以下內容
{  "registry-mirrors": [  "https://docker.daocloud.io","https://registry.docker-cn.com",  "http://hub-mirror.c.163.com",  "https://docker.mirrors.ustc.edu.cn"  ]  
}# 2. 保存文件# 3. 重啟docker 服務
sudo systemctl restart docker

注意:

  1. 修改配置文件后,需要重啟 docker 服務
  2. 修改配置文件、重啟 docker 服務,都需要root 權限

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

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

相關文章

JavaScript 基礎 - 7

關于JS函數部分的學習和一個案例的練習 1 函數封裝 抽取相同部分代碼封裝 優點 提高代碼復用性:封裝好的函數可以在多個地方被重復調用,避免了重復編寫相同的代碼。例如,編寫一個計算兩個數之和的函數,在多個不同的計算場景中都…

詳解u3d之AssetBundle

一.AssetBundle的概念 “AssetBundle”可以指兩種不同但相關的東西。 1.1 AssetBundle指的是u3d在磁盤上生成的存放資源的目錄 目錄包含兩種類型文件(下文簡稱AB包): 一個序列化文件,其中包含分解為各個對象并寫入此單個文件的資源。資源文件&#x…

微信登錄模塊封裝

文章目錄 1.資質申請2.combinations-wx-login-starter1.目錄結構2.pom.xml 引入okhttp依賴3.WxLoginProperties.java 屬性配置4.WxLoginUtil.java 后端通過 code 獲取 access_token的工具類5.WxLoginAutoConfiguration.java 自動配置類6.spring.factories 激活自動配置類 3.com…

DeepSeek 介紹及對外國的影響

DeepSeek 簡介 DeepSeek(深度求索)是一家專注實現 AGI(人工通用智能)的中國科技公司,2023 年成立,總部位于杭州,在北京設有研發中心。與多數聚焦具體應用(如人臉識別、語音助手&…

MySQL數據庫(二)- SQL

目錄 ?編輯 一 DDL (一 數據庫操作 1 查詢-數據庫(所有/當前) 2 創建-數據庫 3 刪除-數據庫 4 使用-數據庫 (二 表操作 1 創建-表結構 2 查詢-所有表結構名稱 3 查詢-表結構內容 4 查詢-建表語句 5 添加-字段名數據類型 6 修改-字段數據類…

ARM嵌入式學習--第十天(UART)

--UART介紹 UART(Universal Asynchonous Receiver and Transmitter)通用異步接收器,是一種通用串行數據總線,用于異步通信。該總線雙向通信,可以實現全雙工傳輸和接收。在嵌入式設計中,UART用來與PC進行通信,包括與監控…

面試題-消失的數字-異或

消失的數字 數組nums包含從0到n的所有整數,但其中缺了一個。請編寫代碼找出那個缺失的整數。你有辦法在 O(n) 時間內完成嗎? 示例: 輸入:[3,0,1] 輸出:2 int missingNumber(int* nums, int numsSize) {}分析 本題對…

數據結構與算法之棧: LeetCode 1685. 有序數組中差絕對值之和 (Ts版)

有序數組中差絕對值之和 https://leetcode.cn/problems/sum-of-absolute-differences-in-a-sorted-array/description/ 描述 給你一個 非遞減 有序整數數組 nums 請你建立并返回一個整數數組 result,它跟 nums 長度相同,且result[i] 等于 nums[i] 與數…

筆試-排列組合

應用 一個長度為[1, 50]、元素都是字符串的非空數組,每個字符串的長度為[1, 30],代表非負整數,元素可以以“0”開頭。例如:[“13”, “045”,“09”,“56”]。 將所有字符串排列組合,拼起來組成…

Python3 OS模塊中的文件/目錄方法說明十七

一. 簡介 前面文章簡單學習了 Python3 中 OS模塊中的文件/目錄的部分函數。 本文繼續來學習 OS 模塊中文件、目錄的操作方法:os.walk() 方法、os.write()方法 二. Python3 OS模塊中的文件/目錄方法 1. os.walk() 方法 os.walk() 方法用于生成目錄樹中的文件名&a…

[Java]抽象類

1. 什么是抽象類? 1.1 定義: 抽象類是一個不能實例化的類,它是用來作為其他類的基類的。抽象類可以包含抽象方法和非抽象方法。抽象方法沒有方法體,子類必須重寫這些方法并提供具體的實現。抽象類可以有構造方法、成員變量、靜態…

css三角圖標

案例三角&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><s…

跨越通信障礙:深入了解ZeroMQ的魅力

在復雜的分布式系統開發中&#xff0c;進程間通信就像一座橋梁&#xff0c;連接著各個獨立運行的進程&#xff0c;讓它們能夠協同工作。然而&#xff0c;傳統的通信方式往往伴隨著復雜的設置、高昂的性能開銷以及有限的靈活性&#xff0c;成為了開發者們前進道路上的 “絆腳石”…

深入解析 COUNT(DISTINCT) OVER(ORDER BY):原理、問題與高效替代方案

目錄 一、累計去重需求場景 二、COUNT(DISTINCT) OVER(ORDER BY) 語法解析 2.1 基礎語法 2.2 執行原理 三、三大核心問題分析

線性數據結構:單向鏈表

放棄眼高手低&#xff0c;你真正投入學習&#xff0c;會因為找到一個新方法產生成就感&#xff0c;學習不僅是片面的記單詞、學高數......只要是提升自己的過程&#xff0c;探索到了未知&#xff0c;就是學習。 目錄 一.鏈表的理解 二.鏈表的分類&#xff08;重點理解&#xf…

基于PyQt5打造的實用工具——PDF文件加圖片水印,可調大小位置,可批量處理!

01 項目簡介 &#xff08;1&#xff09;項目背景 隨著PDF文件在信息交流中的廣泛應用&#xff0c;用戶對圖片水印的添加提出了更高要求&#xff0c;既要美觀&#xff0c;又需高效處理批量文件。現有工具難以實現精確調整和快速批量操作&#xff0c;操作繁瑣且效果不理想。本項…

MCU內部ADC模塊誤差如何校準

本文章是筆者整理的備忘筆記。希望在幫助自己溫習避免遺忘的同時&#xff0c;也能幫助其他需要參考的朋友。如有謬誤&#xff0c;歡迎大家進行指正。 一、ADC誤差校準引言 MCU 片內 ADC 模塊的誤差總包括了 5 個靜態參數 (靜態失調&#xff0c;增益誤差&#xff0c;微分非線性…

嵌入式硬件篇---CPUGPUTPU

文章目錄 第一部分&#xff1a;處理器CPU&#xff08;中央處理器&#xff09;1.通用性2.核心數3.緩存4.指令集5.功耗和發熱 GPU&#xff08;圖形處理器&#xff09;1.并行處理2.核心數量3.內存帶寬4.專門的應用 TPU&#xff08;張量處理單元&#xff09;1.為深度學習定制2.低精…

03-機器學習-數據獲取

一、流行機器學習數據集 主流機器學習數據集匯總 數據集名稱描述來源MNIST手寫數字圖像數據集&#xff0c;由美國人口普查局員工書寫。MNIST官網ImageNet包含數百萬張圖像&#xff0c;用于圖像分類和目標檢測。ImageNet官網AudioSet包含YouTube音頻片段&#xff0c;用于聲音分…

doris:STRUCT

STRUCT<field_name:field_type [COMMENT comment_string], ... > 表示由多個 Field 組成的結構體&#xff0c;也可被理解為多個列的集合。 不能作為 Key 使用&#xff0c;目前 STRUCT 僅支持在 Duplicate 模型的表中使用。一個 Struct 中的 Field 的名字和數量固定&…