安装wsl && 在wsl2中安装docker教程

安装wsl && 在wsl2中安装docker教程:

Dockerfile构建Ubuntu镜像,并保证多个容器可以ssh互访

一、安装docker

步骤 1:确保 WSL 2 已启用
  1. 打开 PowerShell(管理员权限),运行以下命令确保 WSL 2 已启用:

    wsl --list --verbose
    

    如果 WSL 版本不是 2,可以通过以下命令设置:

    wsl --set-version <发行版名称> 2
    

    例如:

    wsl --set-version Ubuntu 2
    
  2. 如果尚未安装 WSL 2,可以通过以下命令安装:

    # 首先在Windows的功能中打开两个服务 (Virtual Machine Platform )虚拟机平台 和 适用于Linux的Windows子系统(如图) 
    wsl --install
    

在这里插入图片描述

步骤 2:在 WSL 2 中安装 Docker
  1. 打开 WSL 2 终端(例如 Ubuntu)。

  2. 更新包列表并安装依赖:

    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    
    
    
  3. 添加 Docker 官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
  4. 添加 Docker 的 APT 仓库:

    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.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 update
    sudo apt install -y docker-ce docker-ce-cli containerd.io
    
  6. 启动 Docker 服务:

    sudo service docker start
    
  7. 将当前用户添加到 docker 组,以避免每次都需要 sudo

    sudo usermod -aG docker $USER
    
    exit
    

    然后退出并重新登录 WSL 以使更改生效。

  8. 验证 Docker 是否安装成功:

    docker --version
    docker run hello-world
    

二、配置 Docker 国内镜像源

可以显著加快拉取镜像的速度。以下是具体步骤


步骤 1:修改 Docker 配置文件
  1. 打开 Docker 的配置文件 daemon.json。如果文件不存在,可以创建它:

    sudo nano /etc/docker/daemon.json
    
  2. 在文件中添加以下内容(以配置常用的国内镜像源为例):

    {
      "registry-mirrors": [
        "https://docker.1panel.live",
        "https://docker.kejilion.pro",
        "https://dockercf.jsdelivr.fyi",
        "https://docker.jsdelivr.fyi",
        "https://dockertest.jsdelivr.fyi",
        "https://hub.littlediary.cn",
        "https://proxy.1panel.live",
        "https://docker.1panelproxy.com",
        "https://image.cloudlayer.icu",
        "https://docker.1panel.top",
        "https://docker.anye.in",
        "https://docker-0.unsee.tech",
        "https://hub.rat.dev",
        "https://hub3.nat.tf",
        "https://docker.1ms.run",
        "https://func.ink",
        "https://a.ussh.net",
        "https://docker.hlmirror.com",
        "https://lispy.org",
        "https://docker.yomansunter.com",
        "https://docker.xuanyuan.me",
        "https://docker.mybacc.com",
        "https://dytt.online",
        "https://docker.xiaogenban1993.com",
        "https://dockerpull.cn",
        "https://docker.zhai.cm",
        "https://dockerhub.websoft9.com",
        "https://dockerpull.pw",
        "https://docker-mirror.aigc2d.com",
        "https://docker.sunzishaokao.com",
        "https://docker.melikeme.cn"
      ]
    }
    
  3. 保存并退出编辑器(在 nano 中按 Ctrl + X,然后按 Y 确认保存)。


步骤 2:重启 Docker 服务
  1. 重启 Docker 服务以使配置生效:

    sudo service docker restart
    
  2. 检查配置是否生效:

    docker info
    

    在输出中查找 Registry Mirrors,确认你添加的镜像源已生效。

三、创建docker网络

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

在这里插入图片描述

四、删除悬空镜像

悬空镜像指的是docker会产生一些无用镜像,这样的镜像被称为悬空镜像


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

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

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

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

五、使用Dockerfile构建镜像

在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:创建Dockerfile并配置

在ssh_server_image目录中创建Dockerfile

nano Dockerfile

Dockerfile内容:

# 拉取镜像
FROM ubuntu:latest

# 避免交互式提示(防止构建过程中被交互操作卡住)
ENV DEBIAN_FRONTEND=noninteractive

# 替换为阿里云镜像源
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 安装一些常用软件
RUN apt-get update && apt-get install -y \
    openssh-server \
    net-tools \
    iputils-ping \
    vim \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*


# 创建SSH所需目录
RUN mkdir -p /var/run/sshd


# 配置SSH
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config

# 创建SSH密钥对
RUN mkdir -p /root/.ssh
RUN ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ""
RUN cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
RUN chmod 600 /root/.ssh/authorized_keys


# 添加SSH主机配置
RUN echo "Host localhost" > /root/.ssh/config
RUN echo "  StrictHostKeyChecking no" >> /root/.ssh/config
RUN echo "  UserKnownHostsFile=/dev/null" >> /root/.ssh/config
RUN echo "Host sm" >> /root/.ssh/config
RUN echo "  StrictHostKeyChecking no" >> /root/.ssh/config
RUN echo "  UserKnownHostsFile=/dev/null" >> /root/.ssh/config

# 创建启动脚本,运行容器时自动启动ssh服务,并确保容器持续运行(该方式适合前台运行容器)
RUN echo '#!/bin/bash' > /sshstart.sh
RUN echo '/usr/sbin/sshd' >> /sshstart.sh
RUN echo 'echo "SSH服务已启动~~~"' >> /sshstart.sh
# 运行容器后后台运行ssh服务并保持容器交互
RUN echo '/bin/bash' >> /sshstart.sh
RUN chmod +x /sshstart.sh

# 设置容器工作目录
WORKDIR /root
# 开放SSH端口
EXPOSE 22

# 设置入口点(容器创建自动执行脚本打开ssh服务)
ENTRYPOINT ["/sshstart.sh"]

编辑完内容后,按Ctrl+X退出,按Y保存,然后回车确认文件名为Dockerfile

步骤3:构建镜像:
docker build -t cc .

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

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

docker images
注意:

如果修改Dockerfile文件从新构建镜像,那么请删除镜像后再构建。

docker rmi 镜像名称

六、运行容器

使用 docker run 命令运行容器,并配置相关参数:

docker run -it --rm \
  --name spark_master \
  --hostname sm \
  --network spark_network \
  --ip 172.19.0.2 \
  -v 你自己sm文件夹所在的目录/sm:/root/sm \
  -p 宿主机端口:容器端口
  <image_name>

参数说明

  • -it:以交互模式运行容器,并分配一个伪终端。
  • --rm:容器退出时自动删除容器。
  • --name spark_master:指定容器名称为 spark_master
  • --hostname sm:设置容器的主机名为 sm
  • --network spark_network:将容器连接到 spark_network 网络。
  • --ip 172.19.0.2:为容器分配静态 IP 地址 172.19.0.2
  • -v $(pwd)/sm:/root/sm:将当前目录下的 sm 文件夹挂载到容器的 /root/sm 目录。
  • -p 9022:22:宿主机端口 :容器端口映射
  • <image_name>:替换为你要运行的镜像名称。

示例

 docker run -it --rm   --name spark_master   --hostname sm   --network spark_network   --ip 172.19.0.2   -v /home/work/spark/sm:/root/sm -p 9022:22  cc

七、验证容器内ssh互访

同时运行容器spark_master和spark_master1,使用ssh互访

ssh 主机名

在sm中使用ssh访问sm1
在这里插入图片描述

在sm1中使用ssh访问sm
在这里插入图片描述

### 如何在WSL安装配置Docker #### 安装前准备 确保已经按照官方指导完成了Windows Subsystem for Linux (WSL) 的安装,并选择了合适的Linux发行版,如Ubuntu。重启计算机以完成WSL安装[^1]。 #### 更新WSL中的Linux发行版 打开命令行工具或PowerShell,输入`wsl --update`更新到最新的WSL版本。随后,在WSL中启动所选的Linux发行版终端: ```bash sudo apt update && sudo apt upgrade -y ``` 这一步骤会更新软件包列表并升级所有已安装的包,保持系统的最新状态。 #### 配置必要的依赖项 为了使后续操作顺利进行,先安装一些必需的基础组件: ```bash sudo apt install apt-transport-https ca-certificates curl software-properties-common -y ``` 接着添加Docker官方GPG密钥库认证信息: ```bash curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg ``` 最后,将稳定的Docker仓库加入APT源列表中: ```bash echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` 以上步骤均来自标准流程,用于确保能够安全稳定地获取Docker资源[^2]。 #### 安装Docker CE 再次刷新本地缓存后就可以正式开始安装Docker社区版(CE): ```bash sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io -y ``` 验证服务是否正常启动: ```bash sudo systemctl start docker sudo systemctl enable docker ``` 如果遇到无法连接守护进程的问题,则可能是由于权限不足或其他原因造成的。此时可以尝试使用`usermod`命令赋予当前用户访问权限,或者检查是否有防火墙阻止了通信[^3]。 #### 测试安装成果 执行简单的测试命令来确认一切工作正常: ```bash sudo docker run hello-world ``` 这条指令会让Docker拉取一个小型镜像并在其中运行一段消息输出程序,以此证明环境搭建成功[^4]。 #### 设置国内镜像加速器(可选) 对于中国地区的使用者来说,可以通过编辑daemon.json文件的方式设置阿里云提供的镜像加速地址,从而加快下载速度: ```json { "registry-mirrors": ["https://<your_mirror>.mirror.aliyuncs.com"] } ``` 保存更改之后记得重新加载配置让其生效: ```bash sudo systemctl restart docker ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值