在Ubuntu環境中安裝Docker和Minikube的完整指南

目錄

前言

準備工作

第一部分:安裝Docker

步驟1:卸載舊版本(如果有)

步驟2:安裝依賴包

步驟3:添加Docker官方GPG密鑰

步驟4:設置Docker倉庫

步驟5:安裝Docker引擎

步驟6:驗證Docker安裝

步驟7:將當前用戶加入docker組(避免每次使用sudo)

第二部分:安裝Minikube

步驟1:安裝kubectl

步驟2:安裝Minikube

步驟3:啟動Minikube

步驟4:驗證Minikube安裝

第三部分:基本使用和測試

1. 部署一個簡單的應用

2. 暴露服務

3. 獲取服務URL

4. 查看集群信息

常用命令備忘

常見問題解決

1. Minikube啟動時卡住

2. 拉取鏡像失敗

3. Docker權限問題

結論

擴展閱讀


前言

在現代軟件開發中,容器化和Kubernetes已經成為不可或缺的技術。本文將詳細介紹如何在Ubuntu系統中安裝Docker和Minikube,為本地Kubernetes開發環境搭建堅實的基礎。

準備工作

在開始之前,請確保:

  1. 你有一臺運行Ubuntu 18.04或更高版本的機器(推薦20.04 LTS或22.04 LTS)

  2. 擁有管理員權限(sudo權限)

  3. 至少2GB的可用內存(4GB或更多會更好)

  4. 穩定的網絡連接

第一部分:安裝Docker

步驟1:卸載舊版本(如果有)

sudo apt-get remove docker docker-engine docker.io containerd runc

步驟2:安裝依賴包

sudo apt-get update
sudo apt-get install \ca-certificates \curl \gnupg \lsb-release

步驟3:添加Docker官方GPG密鑰

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

步驟4:設置Docker倉庫

bash

echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步驟5:安裝Docker引擎

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

步驟6:驗證Docker安裝

sudo docker run hello-world

如果看到"Hello from Docker!"的消息,說明安裝成功。

步驟7:將當前用戶加入docker組(避免每次使用sudo)

sudo usermod -aG docker $USER
newgrp docker  # 立即生效,無需重新登錄

第二部分:安裝Minikube

步驟1:安裝kubectl

Minikube需要kubectl來與Kubernetes集群交互。

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

驗證安裝:

kubectl version --client

步驟2:安裝Minikube

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

步驟3:啟動Minikube

minikube start --driver=docker

這個命令會:

  1. 使用Docker作為驅動創建一個本地Kubernetes集群

  2. 下載必要的鏡像

  3. 配置kubectl與這個集群通信

步驟4:驗證Minikube安裝

minikube status
kubectl get nodes

你應該看到類似這樣的輸出:

NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   1m    v1.22.3

第三部分:基本使用和測試

1. 部署一個簡單的應用

kubectl create deployment hello-minikube --image=k8s.gcr.io/echoserver:1.4

2. 暴露服務

kubectl expose deployment hello-minikube --type=NodePort --port=8080

3. 獲取服務URL

minikube service hello-minikube --url

訪問返回的URL,你應該能看到Echoserver的響應。

4. 查看集群信息

kubectl get all

常用命令備忘

  • 啟動Minikube:minikube start

  • 停止Minikube:minikube stop

  • 刪除Minikube集群:minikube delete

  • 進入Minikube虛擬機(如果使用虛擬機驅動):minikube ssh

  • 打開Kubernetes儀表板:minikube dashboard

  • 查看Minikube狀態:minikube status

  • 查看Minikube日志:minikube logs

常見問題解決

1. Minikube啟動時卡住

嘗試增加內存限制:

minikube start --memory=4096 --driver=docker

2. 拉取鏡像失敗

可以嘗試設置國內鏡像源:

minikube delete
minikube start --image-mirror-country='cn' --driver=docker

3. Docker權限問題

如果遇到權限問題,確保你的用戶已加入docker組:

sudo usermod -aG docker $USER
newgrp docker

結論

通過以上步驟,你已經成功在Ubuntu系統上搭建了一個完整的本地Kubernetes開發環境。這個環境非常適合:

  1. 學習和測試Kubernetes概念

  2. 開發微服務應用

  3. 測試容器化部署

  4. CI/CD流程的本地驗證

Minikube提供了幾乎所有的Kuberntes功能,而無需復雜的云環境配置。結合Docker,你可以輕松地在本地構建、測試和部署容器化應用。

擴展閱讀

  1. Docker官方文檔

  2. Minikube官方文檔

  3. Kubernetes官方文檔

希望這篇指南對你有所幫助!Happy containerizing!

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

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

相關文章

幾個概率分布在機器學習應用示例

一、說明 在這份快速指南中,我們將介紹最重要的分布——從始終公平的均勻分布,到鐘形的正態分布,計數點擊的泊松分布,以及二元選擇的二項分布。 沒有復雜的數學,只有清晰的概念、真實的例子,以及為什么它們…

2025年測繪程序設計模擬賽一--地形圖圖幅編號及圖廓點經緯度計算

想要在2026年參加這個比賽的,可以加入小編和其它大佬所建的群242845175一起來備賽,為2026年的比賽打基礎,也可以私信小編,為你答疑解惑一、讀取文件 這里有兩種文件需要讀取,所以要額外處理 internal class Read {publ…

【C++基礎】名字空間與 inline 命名空間:面試高頻考點與真題解析

想象一下,你正在開發一個大型項目,團隊中有10名程序員同時工作。當你們分別定義了calculate()函數時,編譯器會陷入混亂:它不知道應該調用哪個版本的calculate。這就是C++引入名字空間(Namespace)的根本原因! 一、名字空間(Namespace)基礎概念 1.1 為什么需要名字空間…

Pytest項目_day08(setup、teardown前置后置操作)

setup模塊級setup_module:運行于模塊開始之前,生效一次 一個py文件(測試文件)就是一個模塊函數級setup_function:對于每條(不在類中的)函數用例生效,如果函數在類中,那么…

trae開發c#

安裝插件C# Dev Kit,使用的版本是1.41.11 .NET Install Tool一般會自動安裝,安裝C# dev kit的時候,版本2.3.7 C# 插件,版本2.87.31 https://marketplace.visualstudio.com/items?itemNamems-dotnettools.vscode-dotnet-runtim…

Modstart 請求出現 Access to XMLHttpRequest at ‘xx‘

在 uniapp 前端頁面請求時出現類似如下錯誤Access to XMLHttpRequest at https://example.com/api/mtiku/config from origin http://localhost:20000 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control…

計算機視覺CS231n學習(5)

循環神經網絡 RNN recurrent neural networksRNN序列處理能力(RNN核心作用) RNN處理序列數據,相比“Vanilla”神經網絡(僅支持一對一映射),RNN支持多種序列映射模式: 一對一:傳統分類…

Spring Boot Redis 緩存完全指南

Spring Boot Redis 緩存完全指南 1. 項目依賴配置 1.1 Maven依賴 <dependencies><!-- Spring Boot Redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><…

八股——WebSocket

文章目錄1、 什么是 WebSocket&#xff1f;與 Http 協議的區別是什么&#xff1f;2、 Http 是如何升級為 WebSocket 的&#xff1f;3、 為什么 WebSocket 可以進行全雙工模式的消息傳輸&#xff0c;而 Http 不可以&#xff1f;4、 什么是 TCP 的沾包和拆包&#xff1f;5、 WebS…

Mysql 如何使用 binlog 日志回滾操作失誤的數據

文章目錄一、背景二、準備測試數據1. 創建測試表2. 創建測試數據三、模擬誤操作四、數據回滾&#xff08;一&#xff09;方案一&#xff1a;云數據庫恢復&#xff08;二&#xff09;方案二&#xff1a;手動恢復1. 查詢 binlog 日志2. 找到刪除語句&#xff0c;手動還原為插入語…

wodpress結構化數據對SEO的作用

在 WordPress 網站中&#xff0c;結構化數據對 SEO 的作用主要體現在以下幾個方面&#xff1a; 1. 提升搜索結果的可見性 結構化數據能夠幫助搜索引擎更好地理解網頁內容&#xff0c;從而以更精準的方式展示搜索結果。通過添加結構化數據&#xff0c;網頁可以在搜索結果中顯示…

講一講@ImportResource

題目詳細答案ImportResource是 Spring 框架中的一個注解&#xff0c;用于將傳統的 XML 配置文件導入到基于 Java 配置的 Spring 應用程序中。它允許開發者在使用 Java 配置的同時&#xff0c;繼續利用現有的 XML 配置文件。這樣可以逐步遷移舊的 XML 配置&#xff0c;或者在某些…

解決 Nginx 反代中 proxy_ssl_name 環境變量失效問題:網頁能打開但登錄失敗

前言&#xff1a;在現代企業架構中&#xff0c;多域名反向代理是實現業務隔離、品牌獨立的常見方案。然而&#xff0c;看似簡單的Nginx配置背后&#xff0c;隱藏著與TLS協議、后端認證邏輯深度綁定的細節陷阱。本文將從原理到實踐&#xff0c;詳解為何在多域名場景下&#xff0…

三步完成,A100本地vLLM部署gpt-oss,并啟動遠程可訪問api

A100本地vLLM部署gpt-oss&#xff0c;并啟動遠程可訪問api GPT-oss試用 gpt-oss有兩個原生配置是目前&#xff08;2025-8-8&#xff09;Ampere系列顯卡不支持的&#xff0c;分別是默認的MXFP4量化&#xff0c;以及Flash-attn V3。官方給出的vllm教程也是默認使用的是H系列顯卡…

【華為機試】63. 不同路徑 II

文章目錄63. 不同路徑 II題目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a;解題思路核心思想&#xff1a;動態規劃&#xff08;避開障礙&#xff09;算法流程復雜度分析邊界與細節方法對比代碼實現Go 實現&#xff08;含二維DP / 一維DP / 記憶化&#xff09;測試…

C++ 模擬實現 map 和 set:掌握核心數據結構

C 模擬實現 map 和 set&#xff1a;掌握核心數據結構 文章目錄C 模擬實現 map 和 set&#xff1a;掌握核心數據結構一、set 和 map 的結構1.1 set的結構1.2 map的結構二、對紅黑樹的改造2.1 改造紅黑樹的節點2.2 改造紅黑樹2.2.1 仿函數的使用2.2.2 插入函數的改造2.2.3 刪除函…

根據ASTM D4169-23e1標準,如何選擇合適的流通周期進行測試?

根據ASTM D4169-23e1標準及行業實踐&#xff0c;選擇流通周期&#xff08;DC&#xff09;需綜合以下因素&#xff1a;一、核心選擇依據?產品屬性與包裝形式??重量體積?&#xff1a;輕小包裹&#xff08;<4.53kg且<0.056m&#xff09;適用DC2/3/4/6/9/13-17等周期&…

MySQL的觸發器:

目錄 觸發器的概念&#xff1a; 創建觸發器&#xff1a; 查看觸發器&#xff1a; 查看當前數據庫的所有觸發器的定義&#xff1a; 查看當前數據中某個觸發器的定義&#xff1a; 從系統information_schema的TRIGGERS表中查詢"salary_check_trigger"觸發器的信息…

基于ubuntu搭建gitlab

原文地址&#xff1a;基于ubuntu搭建gitlab – 無敵牛 歡迎參觀我的網站&#xff1a;無敵牛 – 技術/著作/典籍/分享等 之前介紹了一個使用 git openssh-server 搭建一個極簡 git 庫的方法&#xff0c;感興趣可以查看往期文章&#xff1a;手搓一個極簡遠端git庫 – 無敵牛 。…

測試GO前沿實驗室:為水系電池研究提供多維度表征解決方案

測試GO前沿實驗室&#xff1a;為水系電池研究提供多維度表征解決方案隨著全球能源轉型加速&#xff0c;水系電池因其高安全性、低成本和環境友好特性&#xff0c;成為下一代儲能技術的重要發展方向。測試狗前沿實驗室針對水系電池研發中的關鍵科學問題&#xff0c;整合先進表征…