Windows Linux子系统(WSL)上的Docker开发




要在WSL中的docker上完全使用该项目,您需要安装WSL2。在编写本文时,您只能将其用作Windows Insider程序的一部分(WSL 2在版本18932及更高版本中可用)。 还值得一提的是,必须安装Windows 10 Pro版本才能安装和配置Docker Desktop。


重要! WSL 2不再需要Windows 10的DockerDesktop。Ubuntu中的Docker Pro部分介绍了如何使用WSL 2。



第一步


输入初步评估程序并安装更新后,您需要安装Linux发行版(在本示例中,使用Ubuntu 18.04)和带有WSL 2 Tech Preview的Docker桌面:


  1. Docker桌面WSL 2技术预览
  2. Windows应用商店中的Ubuntu 18.04

在这两段中,我们都遵循所有安装和配置说明。


安装Ubuntu 18.04发行版


在启动Ubuntu 18.04之前,必须通过在PowerShell中运行两个命令来启用Windows WSL和Windows虚拟机平台:


  1. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux (需要重新启动计算机)
  2. Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform

在您需要确保我们将使用WSL v2之后。 为此,请在WSL或PowerShell终端中,依次执行以下命令:


  • wsl -l -v查看当前安装的版本。 如果为1,则进一步移至列表下方
  • wsl --set-version ubuntu 18.04 2升级到版本2
  • wsl -s ubuntu 18.04将Ubuntu 18.04安装为默认发行版

现在您可以启动Ubuntu 18.04,进行配置(指定用户名和密码)。


安装Docker桌面


重要! WSL 2不再需要Windows 10的DockerDesktop。Ubuntu中的Docker Pro部分介绍了如何使用WSL 2。


在安装过程中,请按照说明进行操作。 安装后,计算机将需要重新启动,并在首次启动时才能打开Hyper-V(由于受支持,因此需要Windows 10 Pro版本)。


重要! 如果Docker Desktop报告被防火墙阻止,请转到防病毒设置并对防火墙规则进行以下更改(在本示例中,将Kaspersky Total Security用作防病毒软件):


  • 转到设置->保护->防火墙->配置数据包规则->本地服务(TCP)->更改
  • 从本地端口列表中删除端口445
  • 保存到

启动Docker Desktop之后,在其上下文菜单中,选择WSL 2 Tech Preview项目。




在打开的窗口中,单击开始按钮。




现在docker和docker-compose在WSL发行版中可用。


重要! 更新后的Docker桌面现在在设置窗口中具有一个带有WSL的选项卡。 它包括对WSL的支持。




重要! 除了“ WSL激活”复选框之外,您还需要在“资​​源”->“ WSL集成”选项卡中激活WSL分发。




发射


意外的是尝试提高Windows用户目录中的项目容器时发生的许多问题。


与运行bash脚本有关的各种错误(通常在构建用于安装必要的库和发行版的容器时开始)以及Linux开发中常见的其他错误,使我们考虑将项目直接放置在Ubuntu 18.04用户目录中。


从解决方案到上一个问题,以下内容是:如何通过Windows上安装的IDE处理项目文件。 作为“最佳实践”,我为自己找到了一个选择-通过VSCode工作(尽管我是PhpStorm的粉丝)。


下载并安装VSCode之后,我们将其安装在Remote Development扩展包中


安装以上扩展程序后,只需运行code .命令code . 在运行VSCode的项目目录中。


在此示例中,需要nginx才能通过浏览器访问容器。 通过sudo apt-get install nginx安装它不是那么简单。 首先,必须通过执行sudo apt update && sudo apt dist-upgrade来更新WSL发行sudo apt update && sudo apt dist-upgrade ,然后才开始安装nginx。


重要! 所有本地域不在Windows发行版的/ etc / hosts文件中注册(甚至没有注册),但在Windows 10中的hosts文件(通常位于C:\ Windows \ System32 \ drivers \ etc \ hosts)中注册。


关于Ubuntu中的Docker


正如知识渊博的用户在注释注释中所提示的那样,WSL 2发行版中的docker绝对起作用。 这使您无需在Windows 10上安装Docker Desktop,并解决了使用Windows 10 Pro版本的问题(对Pro的需求恰恰与使用Docker Desktop有关)。 根据本地站点的说明进行安装:



如果docker在执行命令时开始在守护程序中宣誓就职,请检查服务的状态-在我的情况下,例如nginx,它不会自动启动。 使用sudo service docker start运行它。


如果在组装时出现错误“服务未能构建:cgroups:找不到cgroup挂载目标:未知”,请尝试以下解决方案(不是我的,我在源代码中找到了链接): sudo mkdir /sys/fs/cgroup/systemd ; sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd


通过PhpStorm处理项目


若要提供通过PhpStorm在WSL中处理项目的功能,必须执行以下操作:


  • 以管理员身份运行Windows 10命令提示符;
  • 在Windows 10命令提示符下,运行命令mklink /DC:\project_directory \\wsl$\Ubuntu\home\user\project_directory ,这将创建一个指向项目文件夹的符号链接。

之后,在IDE中,您可以沿路径C:\ project_directory打开项目。


PS Dmitry Simagin ,谢谢您的决定。


资料来源


可以在这里找到每个步骤的详细说明:


Source: https://habr.com/ru/post/zh-CN474346/


All Articles