在 Windows WSL Ubuntu 上安装原生Docker

最近我们成功地在Windows的WSL(Windows Subsystem for Linux)Ubuntu系统上安装了Linux原生的Docker。这一成就不仅标志着技术的进步,而且为使用Windows系统且依赖容器环境的开发者们打开了新的大门。本文将详细介绍安装过程,并讨论这一功能的重要性以及它对微软团队开发效率的积极影响。

关键事件:WSL开始支持systemd

WSL(Windows Subsystem for Linux)开始支持systemd是在2022年9月21日。这一支持首先在Windows 11中提供,使得WSL的体验更加接近于使用裸机Linux。Systemd是许多流行Linux发行版(如Ubuntu、Redhat等)使用的初始化系统和服务管理器。对于那些需要systemd来管理服务的应用来说,这是一个重要的进步,因为它允许在WSL中使用如snap和LXD等依赖于systemd的Linux应用。 这项改变对WSL架构有所影响,因为systemd需要作为PID 1运行,这要求WSL init过程成为systemd的子进程。这一改变确保了系统的干净关机,并且对WSL init过程做了一些调整,以适应这种新的层级结构。尽管systemd需要作为PID 1运行以提供系统和服务管理的功能,实际上WSL的架构调整使得WSL的init进程成为systemd的子进程,而不是直接替换为PID 1。这种架构上的调整是为了保持Linux和Windows组件之间通信的基础设施,同时也考虑到了清洁关机和与WSLg(运行Linux图形用户界面应用的WSL组件)的兼容性。

systemd-support-is-now-available-in-wsl

​​wsl systemd

这意味着,虽然你可能观察到/sbin/init仍然作为1号进程存在,但实际上systemd已经通过WSL的调整被有效地支持和集成,允许使用systemd管理的服务。

对于想在WSL上使用原生Docker的用户来说,这一支持无疑是一个好消息。Docker和许多其他服务可以利用systemd进行管理,提高了WSL在进行容器化开发时的便利性和实用性。通过启用systemd,开发人员可以在WSL上更有效地管理服务,实现更接近Linux的使用体验。

如果我们的系统尚未启用systemd,可以通过修改/etc/wsl.conf文件并添加[boot] systemd=true配置来启用它。这需要WSL的版本至少为0.67.6或更新版本。

这项功能的支持,确实为使用Windows系统且依赖容器环境的开发者带来了便利,使得在Windows上的Linux开发体验更加完整和高效。

安装过程回顾

安装Linux原生Docker在WSL的Ubuntu上的过程可以概括为以下几个步骤:

  1. 更新系统包列表并安装必要的包:
bash 复制代码
apt update && apt -y install --no-install-recommends apt-transport-https ca-certificates curl gnupg2
  1. 添加Docker的官方APT仓库信息:

    bash 复制代码
    echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu jammy stable" | tee /etc/apt/sources.list.d/docker.list
  2. 导入Docker的官方GPG密钥,以确保软件包的真实性:

    bash 复制代码
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | tee /etc/apt/trusted.gpg.d/docker.asc
  3. 再次更新系统包列表,并安装Docker CE(社区版)、CLI工具、containerd.io、以及Docker的其他插件:

    bash 复制代码
    apt update && apt -y install --no-install-recommends docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

功能的意义

在WSL上安装Linux原生的Docker,为依赖容器化技术的开发者们提供了极大的便利。以往,Windows用户要么选择安装Docker Desktop,这是一个重量级的解决方案,要么面临无法直接在WSL中运行Docker的局限。现在,通过原生安装,开发者可以在更接近Linux的环境中运行Docker,享受更轻量、更快速、更灵活的开发体验。

微软团队的开发效率

此次技术突破也是对微软团队高效开发能力的证明。通过不断更新和改进WSL,微软不仅增强了其与Linux生态系统的兼容性,还促进了开发工具和环境的多样性。这表明微软致力于满足开发者社区的需求,无论是通过引入新功能,还是通过改善现有系统的性能和兼容性。

结语

微软在WSL2中加入对Systemd的支持,不仅提高了与Linux应用的兼容性,也大大简化了在Windows上使用Linux原生Docker的过程。这一进步对于依赖容器化开发环境的开发者来说意义重大,它不仅展示了微软对开发者社区需求的重视,也进一步加深了Windows与Linux生态系统之间的整合。现在,开发者可以在Windows上享受到几乎与Linux原生环境相同的开发体验,这无疑将推动跨平台开发的进一步发展。我们期待微软在未来继续推动技术的界限,为开发者社区提供更多的支持和便利。

相关推荐
帅气的人1233 分钟前
使用 docker-compose 启动 es 集群 + kibana
elasticsearch·docker
獨枭16 分钟前
Ubuntu 通过 Docker 搭建 GitLab
ubuntu·docker·gitlab
zixingcai1 小时前
dockertop提示Failed to fetch extensions
docker
yufei-coder9 小时前
掌握 C# 中的 LINQ(语言集成查询)
windows·vscode·c#·visual studio
雪域迷影10 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
莹雨潇潇11 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
立秋678912 小时前
Python的defaultdict详解
服务器·windows·python
Indigo_code13 小时前
【数据结构】【链表代码】合并有序链表
数据结构·windows·链表
暮雪倾风13 小时前
【WPF开发】超级详细的“文件选择”(附带示例工程)
windows·wpf
tangdou36909865514 小时前
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
docker·容器