最近我们成功地在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
这意味着,虽然你可能观察到/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上的过程可以概括为以下几个步骤:
- 更新系统包列表并安装必要的包:
bash
apt update && apt -y install --no-install-recommends apt-transport-https ca-certificates curl gnupg2
-
添加Docker的官方APT仓库信息:
bashecho "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu jammy stable" | tee /etc/apt/sources.list.d/docker.list
-
导入Docker的官方GPG密钥,以确保软件包的真实性:
bashcurl -fsSL https://download.docker.com/linux/ubuntu/gpg | tee /etc/apt/trusted.gpg.d/docker.asc
-
再次更新系统包列表,并安装Docker CE(社区版)、CLI工具、containerd.io、以及Docker的其他插件:
bashapt 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原生环境相同的开发体验,这无疑将推动跨平台开发的进一步发展。我们期待微软在未来继续推动技术的界限,为开发者社区提供更多的支持和便利。