第一章:在 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没有接收到任何参数。
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
&spm=1001.2101.3001.5002&articleId=143698097&d=1&t=3&u=fc6bf7d872084a98a5ca870046a7a9db)
504

被折叠的 条评论
为什么被折叠?



