在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。
  不过令⼈遗憾的是⽬前WSL是不⽀持Docker的守护进程,但您可以使⽤连接到通过或您创建的任何其他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
配置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⽂件访问软件是⽆法到的ssh工具windows
打开这两个⽂件中有数据的那个并在结尾处添加
保存后重新启动bash控制台执⾏docker相关命令可以照常执⾏了
由于windows10的推出⽣产⼒⼜进⼀步释放,绝⼤部分开发⼈员还是继续会在windows上进⾏⽇常开发,但是linux⼜是普遍公认的服务器部署⾸选系统,开发⼈员有必要了解linux的⽇常使⽤,并在linux环境下进⾏测试程序的可靠性,wsl⽆疑为我们简化了这⼀过程,告别了使⽤虚拟机的开销,相信会让开发者更⾼效的⼯作