在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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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;整合先进表征…