WSL中搭建SPARK平台(上)


第一章:在 ubuntu 上安装 docker

1.添加新用户

sudo adduser user

2.切换到root用户,输入root密码,将当前用户添加到sudo组:

su -
usermod -aG sudo user

3.退出root用户并重新登录:

exit

重新登录后,user用户将具有sudo权限。

4.更新并安装Docker:
(1)直接在windows上安装Docker Desktop,Docker Desktop 是更适合在桌面系统上运行Docker的一体化工具。(推荐)
在这里插入图片描述
注意启用WSL中的Ubuntu。

(2)安装Docker引擎并让Docker随系统启动:

sudo apt update
sudo apt install docker.io -y

在这里插入图片描述

sudo systemctl enable docker

5.验证Docker安装:

sudo docker version

在这里插入图片描述
这样,就在Ubuntu上成功添加了一个新用户并安装了Docker

第二章:创建新 Docker 网络

1.删除已有的网络 (如果有网络,spark_network)

sudo docker network rm spark_network

sudo:表示需要以管理员身份执行该命令。
docker network rm:删除一个指定的Docker网络。
spark_network:这是网络的名称。删除该网络以确保创建新网络时不会有同名冲突。

2.创建一个名为 spark_network 的新 Docker 网络

sudo docker network create --driver bridge --subnet 172.19.0.0/16 --gateway 172.19.0.1 spark_network

sudo:以管理员身份执行。
docker network create:用于创建新的Docker网络。
–driver bridge:指定网络驱动程序为bridge。bridge网络允许容器之间进行隔离和通信,适合多个容器在同一主机上相互通信的场景。
–subnet 172.19.0.0/16:指定网络的子网IP地址范围,这里设置为172.19.0.0/16,表示容器IP地址范围从172.19.0.1到172.19.255.254。
–gateway 172.19.0.1:设置该网络的网关IP地址为172.19.0.1,用作容器之间的通信入口。
spark_network:这是要创建的网络名称。

在这里插入图片描述

第三章:构建镜像和设置SSH文件

1.删除悬空的(无用的)Docker镜像

sudo docker rmi $(sudo docker images --filter "dangling=true" -q --no-trunc)

解释:
docker images --filter “dangling=true”:列出所有没有被任何容器使用的悬空镜像。
-q:只返回镜像ID,方便删除。
–no-trunc:确保显示完整的镜像ID。
docker rmi $(…):删除这些无用镜像,有助于节省空间,确保后续构建新镜像不会有命名冲突。

用途:
定期清理悬空镜像,特别是重新构建镜像时,避免出现残留镜像的干扰。

这个错误提示说明目前没有符合条件的“悬空”镜像可以删除,因此docker images --filter "dangling=true"命令返回了空结果,导致docker rmi没有接收到任何参数
这个错误提示说明目前没有符合条件的“悬空”镜像可以删除,因此docker images --filter "dangling=true"命令返回了空结果,导致docker rmi没有接收到任何参数。

2.在user用户中构建./ssh_server_image路径,并编写Dockerfile后,构建新的Docker镜像并命名为 cc

(1)创建ssh_server_image目录

mkdir -p ~/ssh_server_image
cd ~/ssh_server_image

这里的~代表当前用户的主目录,因此ssh_server_image将会创建在user用户的主目录中。
在这里插入图片描述

(2)在ssh_server_image目录中创建Dockerfile

nano Dockerfile

在这里插入图片描述

内容:

FROM ubuntu:latest

RUN apt update && apt install -y openssh-server
RUN apt install -y nano vim
RUN echo "root:root" | chpasswd
RUN mkdir /startup
RUN echo "#!/bin/bash\nservice ssh start\n/bin/bash" > /startup/startup.sh
RUN chmod -R 777 /startup/startup.sh

WORKDIR /root/
CMD ["/startup/startup.sh"]

编辑完内容后,按Ctrl+X退出,按Y保存,然后回车确认文件名为Dockerfile
在这里插入图片描述
解释:

FROM ubuntu:latest

使用ubuntu:latest作为基础镜像,这将从Docker官方镜像库下载最新版本的Ubuntu镜像作为起点。
更新软件包并安装OpenSSH服务器

RUN apt update && apt install -y openssh-server

apt update:更新软件包索引,使系统可以获取最新的包信息。
apt install -y openssh-server:安装OpenSSH服务器,以便容器内可以通过SSH进行连接。
-y:自动确认安装,无需手动输入“yes”。
安装文本编辑器

RUN apt install -y nano vim

安装nano和vim,两者都是流行的命令行文本编辑器,便于后续在容器中编辑文件。

RUN echo "root:root" | chpasswd

将root用户的密码设置为root,以便后续能够通过SSH进行连接。

RUN mkdir /startup

创建一个名为/startup的目录,用于存放启动脚本。

RUN echo "#!/bin/bash\nservice ssh start\n/bin/bash" > /startup/startup.sh

创建一个名为startup.sh的脚本文件,并写入以下内容:
#!/bin/bash:指定脚本解释器。
service ssh start:启动SSH服务。
/bin/bash:保持容器打开交互式终端,避免容器立即退出。

RUN chmod -R 777 /startup/startup.sh

为startup.sh脚本赋予读、写、执行权限,以便在容器启动时可以执行此脚本。
-R表示递归修改权限,不过在这里只应用于一个文件。

WORKDIR /root/

设置容器的工作目录为/root/。在该目录下执行命令或启动终端时,将默认进入该目录。

CMD ["/startup/startup.sh"]

指定容器启动时执行/startup/startup.sh脚本。

(3)在ssh_server_image目录下运行以下命令构建镜像:

sudo docker build -t cc .

解释:
-t cc:将镜像命名为cc。
.:表示当前目录,即将Dockerfile所在的当前路径作为构建上下文传给Docker。
完成后,Docker将使用Dockerfile中的指令构建镜像并保存为cc。

3.查看本地是否已经存在Docker镜像:

sudo docker images

这将列出所有已下载到本地的Docker镜像,包括镜像的仓库名(Repository)、标签(Tag)、镜像ID(IMAGE ID)、创建时间(CREATED)和大小(SIZE)。如果列表为空,则说明当前没有任何本地镜像。
在这里插入图片描述

可能出现的问题:i/o timeout
在这里插入图片描述

  • 方法一:建议使用系统代理配置,Docker Desktop会自动检测和使用系统代理配置。

    如果windows操作系统已设置了代理,Docker通常会自动使用该代理。

    也可以手动配置Docker代理,打开Docker Desktop。
    进入 Settings(设置) > Resources(资源) > Proxies(代理)。

在这里插入图片描述
注意把7890换成自己的监听端口。

  • 方法二:使用Docker镜像加速源
    在网络访问Docker Hub较慢或受到限制时,可以使用国内的镜像加速源,例如阿里云提供的Docker加速服务:

    在阿里云控制台注册并获取Docker加速器地址(可以在 阿里云容器镜像服务 上找到)。

    将加速器地址添加到/etc/docker/daemon.json中,如下所示:

{
  "registry-mirrors": ["https://<your-aliyun-id>.mirror.aliyuncs.com"]
}
将`<your-aliyun-id>`替换为实际加速器地址。

保存并重新启动Docker服务:

sudo systemctl restart docker
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值