ITPub博客

首页 > > > 在 Linux 的 Windows 子系统上 (WSL) 使用 Docker(Ubuntu)

在 Linux 的 Windows 子系统上 (WSL) 使用 Docker(Ubuntu)

作者:u_453e1a12781dea 时间:2018-06-08 14:55:40 0 删除 编辑

点击▲关注 “CU技术社区”    置顶公众号

作者 | Chaunce

转自 | https://www.cnblogs.com/xiaoliangge/p/9134585.html


背景


平时开发大部人都是在提供了高效 GUI 的 window 下工作,但是真正部署环境普遍都是在 Linux 中,所以为了让开发环境和部署环境统一,我们需要在 windows 模拟 LInux 环境,以前我们可能通过虚拟机的方式实现,不过自动微软拥抱开源更加开发提供了 Linux 的 Windows 子系统 (WSL) 后,我们又多了一个选择,通过 WSL 运行 linux 程序 (WSL 比通过虚拟机来运行 linux 性能更强,耗费资源更小,安装 linux 环境最大只需要 200 多 M)!经过几次调整 WSL(用于 Linux 的 Windows 子系统,也被称为 Bash for Windows)可以用于 Docker for Windows。

  

不过令人遗憾的是目前 WSL 是不支持 Docker 的守护进程,但您可以使用 Docker CLI 连接到通过 Docker for Windows 或您创建的任何其他 VM 运行的远程 Docker 守护进程


概览

docker 的架构设计分为三个组件:一个客户端,一个 REST API 和一个服务器(守护进程):


  • Client :与 REST API 交互。主要目的是允许用户连接守护进程。

  • REST API:充当客户端和服务器之间的接口,实现通信。

  • 守护进程:负责实际管理容器 - 启动,停止等。守护进程监听来自 docker 客户端的 API 请求。


守护进程与内核关系非常密切。今天在 Windows 中,当您运行 Windows Server 容器时,守护进程在 Windows 中运行。当您切换到 Linux 容器模式时,守护程序实际上在名为 Moby Linux VM 的虚拟机内运行。随着 Docker 即将发布,您将能够并行运行 Windows Server 容器和 Linux 容器,守护进程将始终作为 Windows 进程运行。


然而,客户端不必与守护进程安装在同一个地方。例如,您可以在开发计算机上使用本地 Docker 客户端与 Azure 中的 Docker 进行通信。这使我们可以让 WSL 中的客户端与主机上运行的守护进程通信。


前提:


打开 Hyper-V,并打开 cpu 虚拟化功能

安装 Docker for Windows

安装 WSL

配置 Docker for Windows


在常规设置中,您需要公开没有 TLS 的守护进程。此步骤是必需的,以便守护程序在 TCP 端点上进行侦听。如果你不这样做,那么你将无法从 WSL 连接。


所以为了让客户端和 docker 通信,必须打开以下黄色背景的选项!


您可能还想共享您的驱动器 (土话:盘符)。这一步不是必须的,但如果需要用到某个盘符的文件,建议勾选对应选项,转到 “共享驱动器 (Shared Drives)” 设置并启用它。


配置 WSL


我们需要在 WSL 上安装 Docker 客户端

执行命令:apt installdocker.io

 将 WSL 配置为连接到 Docker for Windows

执行命令:export DOCKER_HOST=tcp://127.0.0.1:2375

 现在执行 docker 命令不会再出现以下提示:


Cannot connect to the Docker daemon. Is the docker daemon running on this host?


但是,该环境变量只会持续到会话结束。每次打开 bash 时都必须重新设置它。因此,为了避免这种情况,您需要在主目录中的一个名为. bash_profile 或者 .bashrc 的文件中设置该变量,


这两个文件只支持 ssh 命令终端用 vi 打开


 

在 FileZilla 文件访问软件是无法找到的


打开这两个文件中有数据的那个并在结尾处添加


 

保存后重新启动 bash 控制台执行 docker 相关命令可以照常执行了


 

由于 windows10 的推出生产力又进一步释放,绝大部分开发人员还是继续会在 windows 上进行日常开发,但是 linux 又是普遍公认的服务器部署首选系统,开发人员有必要了解 linux 的日常使用,并在 linux 环境下进行测试程序的可靠性,wsl 无疑为我们简化了这一过程,告别了使用虚拟机的开销,相信会让开发者更高效的工作

 


原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-17

  • 博文量
    1982
  • 访问量
    17892