WSL Ubuntu 安装 Docker 操作指南

环境信息

  • 操作系统:Windows 10/11
  • WSL版本:WSL 1 或 WSL 2
  • Linux发行版:Ubuntu 24.04 LTS
  • Docker版本:29.1.4

前提条件

  • 已安装WSL
  • 已安装Ubuntu 24.04发行版
  • 具有sudo权限的用户账户

安装步骤

1. 检查WSL环境状态

首先检查WSL的运行状态和Ubuntu版本:

# 检查WSL版本 wsl -l -v # 进入Ubuntu系统 wsl -d Ubuntu-24.04 # 检查系统信息 lsb_release -a uname -a

2. 更新系统包管理器

更新apt包索引并安装必要的依赖:

# 更新包索引 sudo apt-get update # 安装必要的依赖包 sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release

3. 配置Docker镜像源

创建Docker仓库配置文件:

# 创建Docker仓库文件 sudo sh -c 'echo deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu noble stable > /etc/apt/sources.list.d/docker.list' # 下载并添加Docker的GPG密钥 sudo sh -c 'curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg' # 更新包索引 sudo apt-get update

4. 安装Docker引擎

安装Docker CE、Docker CLI和containerd.io:

# 安装Docker相关包 sudo apt-get install -y docker-ce docker-ce-cli containerd.io

5. 配置iptables为legacy模式(WSL 1环境)

由于WSL 1环境不完全支持nftables,需要将iptables配置为legacy模式:

# 设置iptables为legacy模式 sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

6. 配置Docker镜像加速器

创建Docker配置文件,使用国内镜像加速器:

# 创建Docker配置目录 sudo mkdir -p /etc/docker # 创建daemon.json配置文件 sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://docker.1panel.live", "https://fw97fchg.mirror.aliyuncs.com", "https://mirror.ccs.tencentyun.com", "https://docker.m.daocloud.io" ] } EOF

7. 启动Docker服务

启动Docker服务并验证:

# 启动Docker服务 sudo service docker start # 检查Docker服务状态 sudo service docker status

8. 配置Docker服务随系统启动

将Docker服务添加到启动脚本中:

# 将Docker启动命令添加到.bashrc echo 'echo 160523 | sudo -S service docker start' >> ~/.bashrc

9. 配置用户权限

将当前用户添加到docker组,避免每次使用sudo:

# 将用户添加到docker组 sudo usermod -aG docker $USER

注意:组权限更改需要重新登录才能生效。

10. 验证Docker安装

验证Docker是否正确安装:

# 检查Docker版本 docker --version # 检查Docker Compose版本 docker compose version # 检查Docker信息 docker info # 检查Docker服务状态 sudo service docker status

11. 测试Docker功能

拉取并运行测试镜像:

# 拉取Python镜像 sudo docker pull python:3.9-slim # 运行测试容器 sudo docker run --rm python:3.9-slim python --version # 拉取hello-world镜像 sudo docker pull hello-world # 运行hello-world容器 sudo docker run hello-world

常用Docker命令

服务管理

# 启动Docker服务 sudo service docker start # 停止Docker服务 sudo service docker stop # 重启Docker服务 sudo service docker restart # 查看Docker服务状态 sudo service docker status

镜像管理

# 拉取镜像 docker pull <镜像名>:<标签> # 查看本地镜像 docker images # 删除镜像 docker rmi <镜像ID> # 搜索镜像 docker search <关键词>

容器管理

# 运行容器 docker run [选项] <镜像名> # 查看运行中的容器 docker ps # 查看所有容器(包括停止的) docker ps -a # 停止容器 docker stop <容器ID> # 删除容器 docker rm <容器ID> # 查看容器日志 docker logs <容器ID>

Docker Compose命令

# 启动服务 docker compose up # 后台启动服务 docker compose up -d # 停止服务 docker compose down # 查看服务状态 docker compose ps # 查看服务日志 docker compose logs

配置文件说明

Docker配置文件

位置:/etc/docker/daemon.json

常用配置选项:

{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerhub.azk8s.cn" ], "data-root": "/var/lib/docker", "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }

常见问题及解决方案

1. Docker服务无法启动

问题:启动Docker服务时出现错误

解决方案

# 检查iptables配置 sudo update-alternatives --config iptables # 确保使用legacy模式 sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

2. 权限被拒绝

问题:运行Docker命令时提示权限不足

解决方案

# 将用户添加到docker组 sudo usermod -aG docker $USER # 重新登录WSL exit wsl -d Ubuntu-24.04

3. 镜像拉取失败

问题:无法拉取Docker镜像

解决方案

# 检查网络连接 ping www.baidu.com # 检查镜像加速器配置 cat /etc/docker/daemon.json # 重启Docker服务 sudo service docker restart

4. WSL 1网络问题

问题:WSL 1环境中Docker网络连接异常

解决方案

# 确保iptables使用legacy模式 sudo update-alternatives --set iptables /usr/sbin/iptables-legacy sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy # 重启Docker服务 sudo service docker restart

卸载Docker

如果需要卸载Docker:

# 停止Docker服务 sudo service docker stop # 卸载Docker包 sudo apt-get purge docker-ce docker-ce-cli containerd.io # 删除Docker相关文件 sudo rm -rf /var/lib/docker sudo rm -rf /etc/docker sudo rm -rf /var/run/docker.sock

参考资源

  • Docker官方文档:https://docs.docker.com/
  • Docker Hub:https://hub.docker.com/
  • WSL官方文档:https://docs.microsoft.com/en-us/windows/wsl/
  • 阿里云Docker镜像:https://cr.console.aliyun.com/
  • DaoCloud镜像加速器:https://www.daocloud.io/mirror

注意事项

  1. WSL版本:建议使用WSL 2以获得更好的Docker支持
  2. 网络配置:WSL 1环境需要配置iptables为legacy模式
  3. 权限管理:将用户添加到docker组后需要重新登录
  4. 镜像加速器:使用国内镜像加速器可以提高镜像拉取速度
  5. 系统资源:Docker会占用一定的系统资源,请确保系统配置足够

总结

通过以上步骤,您已经成功在WSL Ubuntu环境中安装和配置了Docker。现在可以使用Docker来构建、运行和管理容器化应用程序了。

如有任何问题,请参考常见问题部分或查阅Docker官方文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1141676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python高级之操作Mysql

Python高级 文章目录 Python高级 python操作数据库mysql-connector demo_mysql_test.py: pyMysql python操作数据库mysql-connector 本章节为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。 可以使用 pip 命令…

35 岁职场危机?网络安全这行为啥越老越吃香?

前几天我表弟小王来找我喝茶&#xff0c;聊着聊着突然问我&#xff1a;“老曹&#xff0c;你说我要不要转行做网络安全啊&#xff1f; 听说这行业挺赚钱的。 “我一听就笑了&#xff0c;这不正好最近我刚研究过这个行业吗&#xff1f; 我跟他说&#xff0c;别看现在各行各业…

cruise仿真模型,四轮驱动。 轮毂电机,轮边电机驱动cruise动力性经济性仿真模型,ba...

cruise仿真模型&#xff0c;四轮驱动。 轮毂电机&#xff0c;轮边电机驱动cruise动力性经济性仿真模型&#xff0c;base模型&#xff0c;适用轮边电机驱动及轮毂电机驱动。 可进行动力性经济性仿真分析&#xff0c;控制策略包含扭矩控制及能量回收控制使用c-code编写&#xff0…

SpringBoot+Vue 课程答疑系统管理平台源码【适合毕设/课设/学习】Java+MySQL

&#x1f4a1;实话实说&#xff1a; 有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。 摘要 随着信息技术的快速发展&#xff0c;教育信息化已成为现代教育的重要组成部分。传统的课程答疑方式通常依赖于面对面交流或简单的在线工具&…

从零实现framebuffer显示:裸机环境下简单图形输出教程

点亮第一行像素&#xff1a;在裸机中实现Framebuffer图形输出的硬核实践你有没有试过&#xff0c;在一块全新的开发板上电后&#xff0c;除了串口打印出几行冰冷的“Hello World”&#xff0c;屏幕却始终漆黑一片&#xff1f;这种“看得见摸不着”的调试困境&#xff0c;正是许…

前后端分离BB平台系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着互联网技术的快速发展&#xff0c;传统单体架构的Web应用逐渐暴露出开发效率低、维护成本高、扩展性差等问题。前后端分离架构因其模块化、高内…

安全副业指南:漏洞挖掘 / 技术博客 / 竞赛奖金实战,哪个方向更适合你?

安全副业指南&#xff1a;漏洞挖掘 / 技术博客 / 竞赛奖金实战 很多安全从业者和学生都想通过技能赚 “外快”&#xff0c;却陷入 “想做漏洞挖掘怕没经验&#xff0c;想写博客怕没人看&#xff0c;想打竞赛怕拿不到奖” 的困境。其实安全副业的核心不是 “天赋”&#xff0c;而…

【教程4>第10章>第21节】基于FPGA的图像Laplace边缘提取算法开发——理论分析与matlab仿真

目录 1.软件版本 2.图像Laplace边缘提取算法理论概述 3.图像Laplace边缘提取的matlab仿真测试 欢迎订阅FPGA/MATLAB/Simulink系列教程 《★教程1:matlab入门100例》 《★教程2:fpga入门100例》 《★教程3:simulink入门60例》 《★教程4:FPGA/MATLAB/Simulink联合开发入门与进…

STM32新手必看:Keil5代码自动补全设置手把手教程

让Keil5像现代IDE一样聪明&#xff1a;STM32开发中代码自动补全的真正打开方式你有没有过这样的经历&#xff1f;在写HAL_GPIO_的时候&#xff0c;脑子里明明记得有个初始化函数&#xff0c;但就是拼不对——是_Init()还是_Initialize()&#xff1f;大小写对吗&#xff1f;参数…

Java Web 购物推荐网站系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 随着电子商务的快速发展&#xff0c;个性化推荐系统成为提升用户体验和促进销售的重要手段。传统的购物网站往往缺乏精准的用户行为分析和个性化推…

uds31服务ECU侧内存访问权限控制解析

uds31服务ECU侧内存访问权限控制解析&#xff1a;从协议到实战的深度拆解一次误刷导致整车停线&#xff1f;问题出在哪儿&#xff1f;某OEM在产线上进行ECU软件刷新时&#xff0c;一台车辆突然进入不可恢复的“砖机”状态——无法启动、诊断仪失联。事后排查发现&#xff0c;问…

STM32F4上实现USB2.0全速传输手把手教程

手把手教你用STM32F4实现稳定高效的USB 2.0全速通信你有没有遇到过这样的场景&#xff1a;项目需要实时上传大量传感器数据&#xff0c;但UART太慢、SPI又不方便接电脑&#xff0c;Wi-Fi功耗太高&#xff1f;这时候&#xff0c;USB就成了嵌入式开发者的“终极武器”——即插即用…

【毕业设计】SpringBoot+Vue+MySQL 知识管理系统平台源码+数据库+论文+部署文档

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 在信息化快速发展的时代背景下&#xff0c;知识管理已成为企业和教育机构提升竞争力的重要手段。传统知识管理方式依赖纸质文档或分散的电子文件&a…

免费录屏水印工具:自动生成多种类型格式

软件介绍 今天要推荐的这款小工具是“御风屏幕水印屏幕水印生成”&#xff0c;它专门解决录屏时加水印的麻烦——能自动生成屏幕水印&#xff0c;不用后期再用其他软件折腾&#xff0c;用起来特别省心&#xff0c;尤其适合经常录屏分享的小伙伴。 体积与安装 这软件小到离…

LVGL GUI框架移植:零基础入门必看技术解析

从零开始搞定LVGL移植&#xff1a;嵌入式GUI实战全解析你是不是也遇到过这种情况&#xff1f;项目要做一个带触摸屏的设备&#xff0c;老板说“界面要做得像手机一样流畅”&#xff0c;可你手里的开发板连个图形库都没有。查了一圈发现大家都在用LVGL&#xff0c;但一上手就卡在…

从Boost的设计哲学到工业实践:解锁下一代AI中间件架构的密码

引言&#xff1a;当AI基础设施撞上“范式之墙”2024年Stack Overflow开发者调查揭示了一个令人深思的现象&#xff1a;72%的高级C工程师在构建高性能中间件时&#xff0c;正经历“范式选择困难症”——他们不断在面向对象&#xff08;OOP&#xff09;、泛型编程&#xff08;GP&…

SpringBoot+Vue 高校学科竞赛平台管理平台源码【适合毕设/课设/学习】Java+MySQL

&#x1f4a1;实话实说&#xff1a;有自己的项目库存&#xff0c;不需要找别人拿货再加价&#xff0c;所以能给到超低价格。摘要 在高等教育快速发展的背景下&#xff0c;学科竞赛作为培养学生创新能力和实践能力的重要途径&#xff0c;受到越来越多高校的重视。然而&#xff0…

Keil C51多文件编译策略:8051工程管理完整示例

Keil C51多文件编译实战&#xff1a;构建模块化8051工程的完整路径你有没有遇到过这样的情况&#xff1f;一个简单的LED闪烁程序&#xff0c;最后变成几千行挤在main.c里的“面条代码”&#xff0c;改一处&#xff0c;全盘崩溃。调试时像在迷宫里找出口&#xff0c;而团队协作更…

嵌入式开发避坑指南:HardFault_Handler问题定位核心要点

硬故障不“黑盒”&#xff1a;一文打通Cortex-M硬异常定位的任督二脉你有没有遇到过这样的场景&#xff1f;代码烧进去&#xff0c;板子上电&#xff0c;跑着跑着突然就“死了”——LED停闪、串口无输出、看门狗不断复位。连上调试器一看&#xff0c;PC指针死死地卡在HardFault…

Linux命令-ipcrm命令(删除Linux系统中的进程间通信(IPC)资源)

&#x1f4d6;说明 ipcrm 命令用于删除Linux系统中的进程间通信&#xff08;IPC&#xff09;资源&#xff0c;包括消息队列、共享内存和信号量集。以下是对其用法和关键注意事项的总结。 &#x1f511; 核心参数速览 下表列出了 ipcrm 命令的主要参数及其用途&#xff1a;参数功…