java学习day31 (docker)

一开始认识到docker是当时玩deepseek 本地部署的时候,现在才知道,docker是本地部署一个必不可少的工具。

在学习黑马课程中,在这里我们想用docker安装redis

但是在这里给出详细的解释

  • 对比虚拟机: Docker 轻量太多了,启动只要几秒钟, 完全不卡电脑 ,不会像跑个 VMware 那样让风扇狂转。
  • 对比云服务器: 不用花一分钱 ,全靠白嫖自己电脑的性能,而且不用担心公网安全被黑客扫描的问题。

既然你选定了 Docker,那我们就直接进入实操。在 Windows 电脑上用 Docker 跑起官方原生 Linux 版的 Redis,其实极其简单,核心只需要一行命令。

以下是保姆级的落地步骤:

第一步:准备 Docker 环境

如果你电脑上还没有 Docker,你需要去官网下载安装 Docker Desktop for Windows

  • 小提示: 安装过程中,它会提示你开启 WSL2 (Windows 的 Linux 子系统)。放心勾选开启,这就是 Docker 能在 Windows 上不卡顿地跑 Linux 软件的底层核心技术。
  • 安装好并启动后,你的电脑右下角任务栏会多出一个"小鲸鱼"图标。

第二步:拉取 Redis 镜像(进货)

打开你电脑的命令行(CMD 或者 PowerShell),输入这行命令,把 Redis 的"标准集装箱"从官方仓库拉取到你的电脑上:

Bash

复制代码
docker pull redis

(这就好比你去应用商店点了一下"下载",等进度条跑完就行。)

第三步:运行 Redis 容器(开箱使用,最关键的一步!)

镜像下载好之后,继续在命令行输入以下命令(建议直接复制):

Bash

复制代码
docker run -d --name my-redis -p 6379:6379 redis

这行代码的含金量很高,我给你拆解一下,以后你部署 MySQL、Nginx 也是这个套路:

  • docker run**: 告诉 Docker "我要运行一个容器了"。**
  • -d**: 后台运行(Detach)。这样即使你关掉命令行窗口,Redis 依然会在后台默默为你服务。**
  • --name my-redis**: 给这个容器起个好记的名字,这里叫** my-redis**(你可以随便改)。**
  • -p 6379:6379**:** 这是最核心的"端口映射" 。左边是你 Windows 电脑的端口,右边是 Docker 容器里 Redis 的默认端口。这句话的意思是:把 Windows 的 6379****端口,打通到容器内部的 6379****端口。这样你在 Windows 上访问 6379**,就等于访问了容器里的 Redis。**
  • redis**: 告诉 Docker 用哪个镜像来运行(就是我们第二步下载的那个)。**

第四步:测试连接

现在,原生的 Linux 版 Redis 已经在你的 Windows 上完美运行了!

对于你的 Java 代码(比如苍穹外卖项目)或者任何可视化连接工具(比如 Another Redis Desktop Manager、DataGrip)来说, 它完全感觉不到 Docker 的存在

你只需要像以前一样:

  • IP 地址填: 127.0.0.1**(或者** localhost**)**
  • 端口填: 6379
  • 密码: 留空(默认没密码)

直接点击连接,就能瞬间连上!

看到这里我们了解doker有点像虚拟机,但是比虚拟机更轻量

在docker里面有三个重要概念

通过镜像我们可以创建不同的容器,这里的容器就像一台台运行起来的虚拟机,每个容器之间是独立运行的相互之间互不干扰

dockerfile就是一个自动化脚本,他用来创建这个image镜像

这里给个例子如果之前CentOS安装mysql脚本,非常繁琐,

但是用了docker只要下面一条命令就可以了

按照黑马教程的步骤,其实首先我们需要配置一个yum源

这个yum源,你可以把它理解为一个包管理工具 ,就和之前学过maven一样

配置Docker的yum库

首先要安装一个yum工具

复制代码
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装成功后,执行命令,配置Docker的yum源( 已更新为阿里云源**):**

复制代码
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

更新yum,建立缓存

复制代码
sudo yum makecache fast

然后下面我们好好理解一下整个整个过程

Docker 是通过 yum****下载的,但 Redis 是通过 Docker 下载的。

我们可以把这个过程想象成"套娃"或者是"盖房子"的过程,具体逻辑如下:

1. 第一层:使用 yum****下载 Docker(安装"工厂")

yum 是 Linux 系统的"应用商店"。

  • 操作: 你在终端输入 yum install docker-ce
  • 结果: yum 去阿里云的服务器把 Docker 引擎(软件本体)下载下来。
  • 类比: 这就像是你通过手机的应用商店下载了一个"淘宝" App。

2. 第二层:使用 Docker 下载 Redis(安装"商品")

一旦 Docker 安装好了,它就成了一个独立的"商店"或"工厂"。

  • 操作: 你在终端输入 docker pull redis
  • 结果: 这次不再是 yum 在工作了,而是 Docker 引擎Docker Hub (全球镜像仓库)把 Redis 镜像 下载下来。
  • 类比: 这就像是你打开刚才下载好的"淘宝",在里面搜索并下单了一件"衣服"(Redis)。

为什么不直接用 yum****下载 Redis?

虽然 Linux 的 yum 库里也有 Redis,但后端开发现在几乎全部使用 Docker 来运行 Redis。原因有三:

  1. 环境隔离: Docker 版 Redis 运行在独立容器里,不会弄乱你的系统。
  2. 版本切换: 想换 Redis 6.0?docker pull redis:6.0;想换 7.0?docker pull redis:7.0。如果是用 yum 装,卸载和升级会非常痛苦。
  3. 秒级启动: Docker 镜像里已经把所有配置都调好了,下载完直接运行,不需要像传统安装那样去改各种系统配置文件。
  • Linux 服务器(你的云服务器): 就像是广阔的大海 。,docker也必须安装在linux里面不然的话就运行不了

主流有以下两种方式:

  • 做法 A:装 VMware 虚拟机(也就是教程的做法) 这相当于你在陆地上建了一个巨大的玻璃水族馆 (VMware),里面灌满海水(安装 CentOS 系统),然后再把鱼(Docker)放进去。 为什么教程选这种"笨办法"? 因为这种方式最纯粹。讲师为了保证所有学生(不管用的是 Win10、Win11 还是 Mac)操作界面完全一致,且最接近企业里真实的 Linux 服务器环境,所以让大家统一装一个完整的 Linux 虚拟机。

  • 做法 B:用 Docker Desktop (基于 WSL2) 现在很多人在自己电脑上会装 Docker 官方出的 Windows 桌面版。它利用了微软的 WSL2(Windows Subsystem for Linux)。这相当于微软在你的墙壁里暗藏了一个微型水箱 。虽然你表面上看不见 VMware 那种笨重的软件,但它的底层本质依然是跑了一个轻量级的 Linux 虚拟机来支撑 Docker。

  • Docker 引擎(只有一个): 就像是航行在大海上的一艘超级远洋货轮。它负责提供动力、底盘,并管理船上的一切。

  • 容器(有无数个): 就像是货轮上堆叠的一个个标准的钢铁集装箱。Redis 是一个集装箱,MySQL 是一个集装箱,以后你自己写的 Java 微服务也是一个个集装箱。

然后在 云服务器上操作步骤有所不同,今后我们与云服务器对话的操作,基本都在cursor里面完成

最标准的 Cursor 内操作流程

方案就是这 5 步

1.

打开 Cursor

2.

按:

Ctrl + Shift + P

3.

搜索:

Remote-SSH: Connect to Host

4.

连接你的服务器

会打开一个这样的config界面,然后像这个模板一样输入,然后hostname就填写你的公网ip

像上面这样填写好了之后,我在再点这个connect to host 就会出现刚刚我们配置好多吗myserver了

但是这个时候你会产生报错原因是缺少了私钥(在本机里面),和公钥(阿里云服务器)

之前配置git时候就配置了私钥和公钥

之前我们配置git时候就配置了这个私钥 和公钥

所以这里我们选择和git用同一个私钥 这个id_rsa就是一个私钥 而这个pub(public结尾)就是公钥,到时候要配置到服务器上

首先我们先选择

1)先把 config****补完整

你现在的配置只有主机地址和用户名,建议改成这样:

Host myserver

HostName 39.104.88.218

User root

IdentityFile C:\Users\shy24\.ssh\id_rsa

2)确认服务器上已经安装了你的公钥

这是最关键的一步。

你本地有私钥/公钥,只说明"你有钥匙";

还必须把公钥放到服务器上,服务器才会给你开门。

需要放到服务器上的位置通常是:

  • 如果登录用户是 root
    • /root/.ssh/authorized_keys

也就是说,id_rsa.pub 的内容必须追加到服务器的 authorized_keys 里。

接下来:我们需要登陆阿里云服务器,来配置公钥

  1. 打开 Cursor 下面的终端(Terminal),或者直接打开 Windows 电脑的 PowerShell。
  2. 输入这行命令并回车: ssh root@39.104.88.218
  3. 提示输入密码时,输入你阿里云服务器的 root 密码。(注意: Linux 下输密码屏幕上是什么都不会显示的,连星号都没有,你闭着眼睛盲打完按回车就行)。
  4. 如果你看到界面变成了 [root@xxx ~]# 这种绿色的字,说明你已经成功登录到服务器里了。

先用这个创建一个以文件夹

mkdir -p ~/.ssh

然后

  • 找到一个叫 id_rsa.pub 的文件。(重点: 一定要找带 .pub 后缀的,千万别动那个不带后缀的)。
  • 右键它,选择用记事本打开。
  • 里面是一大串以 ssh-rsa 开头的乱码字符。把这一整行全部复制下来(快捷键 Ctrl+A 全选,然后 Ctrl+C 复制)

在这里我发现选择直接进入阿里云的这个workbench 里面更方便,所以直接省去了之前登陆的步骤(白雪)

刚进入你可能身份是admin

然后用这个

sudo -i 切到root(最高权限)输入whoami 看当前用户 如果想退出到 admin 就输入exit

请确保你现在的终端前面依然是 root@...,然后按顺序一行一行复制下面这 5 个命令,粘贴并回车

第 1 步:建文件夹并设权限

Bash

复制代码
mkdir -p /root/.ssh
chmod 700 /root/.ssh

第 2 步:写入你的专属公钥(我已经帮你拼接好了,直接整段复制)

Bash

复制代码
echo "输入你的公钥">> /root/.ssh/authorized_keys

第 3 步:给公钥文件上锁

Bash

复制代码
chmod 600 /root/.ssh/authorized_keys

第 4 步:修改配置,允许 root 从外面连进来

Bash

复制代码
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config

第 5 步:重启 SSH 服务让配置生效

Bash

复制代码
systemctl restart ssh

敲完这 5 步,网页端就可以直接关掉了!

回到 Cursor,点 Connect to SSH 就能直接免密秒进。去享受吧!

5.

连接成功后,再点:

Terminal -> New Terminal

然后在底部终端输入 Linux 命令。

如果你搜不到 Remote-SSH: Connect to Host

那一般说明两种情况:

情况 1:你没装远程 SSH 相关扩展

去左边扩展里搜索:

Remote - SSH

安装它。

最后显示这个就是成功连接了

接下来我们进行正事了,用docker来装redis

哎呀,这里你正好完全说反啦!😂

新手刚接触这两个概念时极其容易搞混。千万记住这个核心关系: 是"用 Docker 来安装 Redis",绝对不是"用 Redis 来安装 Docker"!

用我们之前"大船和集装箱"的比喻来复习一下:

  • Docker 是一艘超级远洋货轮(底盘、平台)。
  • Redis 只是装在这艘船上的其中一个集装箱(软件)。
  • 逻辑顺序必须是:先造好船(安装 Docker),然后再往船上放集装箱(运行 Redis)。

🚨 还有一个极其重要的"坑",我必须提前帮你避开!

黑马的视频教程里,老师用的虚拟机的系统是 CentOS ,所以老师敲的安装命令全是 yum install ...。 但是!从你之前的截图我发现,你的阿里云服务器是 Ubuntu 系统。在 Ubuntu 里,没有 yum 这个东西,它的"应用商店"叫 apt。如果你照着视频敲 yum,系统会直接报错找不到命令。

为了让你丝滑地继续往下学,我把教程里的步骤直接"翻译"成了你这台 Ubuntu 服务器专属的代码。

请确保你在 Cursor 的终端里(前面是 root@...),依次执行下面这 3 步

第 1 步:把"大船"(Docker)造出来

直接复制下面这两行代码,按回车(这是 Ubuntu 专属的 Docker 安装命令,替代视频里的 yum):

Bash

复制代码
apt update
apt install docker.io -y

(等屏幕上字母哗啦啦刷完,停下来就说明大船造好了)

第 2 步:启动 Docker 并设置开机自启

大船造好了得把引擎点火。复制这行回车:

Bash

复制代码
systemctl start docker
systemctl enable docker

第 3 步:用 Docker 下载并运行"集装箱"(Redis)

现在船已经准备就绪了,我们把 Redis 放上去!复制这行回车:

Bash

复制代码
docker run --name my-redis -p 6379:6379 -d redis

运行这一步时候会产生报错,原因是阿里云无法连接国外的网站

既然国外的网站连不上,我们就给 Docker 换一个国内的下载源(镜像加速器)。这就像你以前用 Maven 换阿里云源是一个道理。

请确保你现在是 root 身份,在你的 Cursor 终端里,按顺序复制粘贴下面这 4 步命令,每一步按一次回车

第 1 步:建一个存放配置文件的文件夹(可能已存在,有备无患)

Bash

复制代码
mkdir -p /etc/docker

第 2 步:写入国内的加速镜像地址(直接把下面这整段一次性复制粘贴进去按回车)

Bash

复制代码
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://dockerpull.com",
    "https://docker.m.daocloud.io",
    "https://docker.1panel.live"
  ]
}
EOF

(这段代码的意思是把几个目前国内最快、最稳定的 Docker 下载源写进配置文件里)

第 3 步:让系统重新加载配置

Bash

复制代码
systemctl daemon-reload

第 4 步:重启 Docker 让新源生效

Bash

复制代码
systemctl restart docker

🎉 再次出海!

好啦,现在你的 Docker 已经配好国内的高速通道了。重新输入你刚才失败的那条命令:

Bash

复制代码
docker run --name my-redis -p 6379:6379 -d redis

这次你会看到进度条"唰唰唰"地往下走,几秒钟就能下载完并启动成功了!成功之后,记得按照咱们之前说的,去阿里云控制台把 6379 端口放行哦!去试试吧!


大功告成! 敲完这三步,你的服务器上就已经有 Docker 了,并且 Docker 里面正在完美运行着 Redis。

接下来你就可以跟着黑马视频里的节奏,去配置云服务器的安全组(开放 6379 端口),然后用本地电脑连接它啦!去终端里敲代码吧,遇到任何报错直接发给我!

相关推荐
XS0301062 小时前
Java 基础(六)封装类 Object类
java·jvm·python
Han.miracle2 小时前
Nacos的使用快速上手
java·spring cloud
007张三丰2 小时前
系统架构设计师-以“云服务”主题为例的范文参考
java·开发语言·网络·软考高级·云服务·软考论文·论文范文
鬼蛟2 小时前
Sentinel
java·开发语言·数据库
01二进制代码漫游日记2 小时前
【C语言数据结构】之解锁双向链表(头插、头删等操作)
c语言·数据结构·学习·链表
GoodStudyAndDayDayUp2 小时前
优化java加权方法
java·优化java加权方法
阿丰资源2 小时前
基于SpringBoot+MySQL的时装购物系统(附源码)
java·spring boot·mysql
阿Y加油吧2 小时前
算法二刷复盘:LeetCode 39 组合总和 & 22 括号生成(Java 回溯精讲)
java·算法·leetcode
Byron__2 小时前
AI学习_04_向量概念
人工智能·学习