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

背景

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

  不过使人遗憾的是目前WSL是不支持Docker的守护进程但您可使用Docker CLI链接到经过Docker for Windows或您建立的任何其余VM 运行的远程Docker守护进程linux

概览

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

  • Client :与REST API交互。主要目的是容许用户链接守护进程。
  • REST API:充当客户端和服务器之间的接口,实现通讯。
  • 守护进程:负责实际管理容器 - 启动,中止等。守护进程监听来自docker客户端的API请求。

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

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

前提:

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

安装Docker for Windows架构

安装WSLssh

配置Docker for Windows

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

因此为了让客户端和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无疑为咱们简化了这一过程,告别了使用虚拟机的开销,相信会让开发者更高效的工做

相关文章
相关标签/搜索