在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的守护进程,但您可以使用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
配置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无疑为我们简化了这一过程,告别了使用虚拟机的开销,相信会让开发者更高效的工作
在Linux的Windows子系统上(WSL)使用Docker(Ubuntu)的更多相关文章
- 【Linux】在Win10上搭建WSL(适用于Linux的Windows子系统)
1.打开WSL ,控制面板 -- 程序 -- 程序和功能 -- 打开或关闭Windows功能 - 选中[适用于Linux的Windows子系统] 2.开启后重启电脑 3.在Win10自带的Micro ...
- 适用于Linux 2的Windows子系统上的CUDA
适用于Linux 2的Windows子系统上的CUDA Announcing CUDA on Windows Subsystem for Linux 2 为了响应大众的需求,微软在2020年5月的构建 ...
- Linux 2 的 Windows 子系统上发布 CUDA
Linux 2 的 Windows 子系统上发布 CUDA 为响应大众需求,微软 宣布 在 2020 年 5 月的 建造 大会上推出了 建造 ( WSL 2 ) – GPU 加速功能.这一特性为许多计 ...
- 适用于Linux的windows子系统
Windows基于图形界面的易用性是有目共睹的,这也是很多普通用户往往难以舍弃的原因.但是Linux系统更强大的网络应用开发能力,却又是Windows系统所无法比拟的.一直以来,很多人都在试图采用各种 ...
- 在Linux和Windows系统上安装Nginx服务器的教程
在Linux和Windows系统上安装Nginx服务器的教程 1.在CentOS系统上安装Nginx 在 CentOS6 版本的 EPEL 源中,已经加入了 nginx 的 rpm 包,不过此 RP ...
- 在Linux和Windows平台上操作MemoryMappedFile(简称MMF)
操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段..NET 4.0新增加了一个System.IO. MemoryMap ...
- WSL(Windows Subsystem for Linux) 适用于Linux的Windows子系统
打开 Microsoft Store , 搜索 Linux .选择 Ubuntu , 仔细看介绍,尤其是安装前的说明 ========================================= ...
- 在Windows子系统(WSL)中配置开机启动服务
在WSL中跑了一些测试服务 比如 mysql nginx等,但关机后每次都要手动开启甚是吃力,本想着用rc.local来编辑开机启动 ,无奈不支持啊!先看看非WSL环境中是怎么实现的. 在 Ubunt ...
- linux和windows之间上传 下载文件 非ftp方式
用 命令 rz 上传 sz 下载 文件夹加上 -r rz上传替换时用 -y 谁用谁知道 两台linux传 : scp -r 文件夹 username@ip:路径 (如果传输文件就 ...
随机推荐
- 同一个菜品商家中心和erp价格显示不一致解决方案FAQ
1.适用场景: 2.问题原因:子账号在商家中心改了价格 3.解决办法: (1).子账号登录商家后台修改 再同步(2).ERP上商品管理 修改价格
- 非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry
非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry Glenn Berry 曾承诺对这个脚本持续更新 -- SQL Server 2012 Diagnostic ...
- Windows Server 2016-Hyper-V 2016新增功能
本文解释了Windows Server 2016和Microsoft Hyper-V Server 2016上Hyper-V的新增功能和变更功能. 与Connected Standby兼容(新) 在使 ...
- 表单取消历史保存之autocomplete的用法
表单取消历史保存之autocomplete的用法 应用场景 浏览器开启了表单自动填充设置后,有些表单中的input元素在添加时会以下拉的形式显示以前填写过的表单,有时候可能会影响用户的使用.比如:da ...
- JavaScript -- 时光流逝(十):Screen 对象、History 对象、Location 对象
JavaScript -- 知识点回顾篇(十):Screen 对象.History 对象.Location 对象 1. Screen 对象 1.1 Screen 对象的属性 (1) availHeig ...
- Java序列化(含transient)
什么是序列化? 我们创建的对象只有在Java虚拟机保持运行时,才会存在于内存中.如果想要超出Java虚拟机的生命周期,就可以将对象序列化,将对象状态转换为字节序列,写入文件(或socket传输),后面 ...
- JDBC复习1
1.什么是JDBC JDBC是java数据库连接技术的简称(Java DataBase Connectivity) jdbc是接口,jdbc驱动才是接口的实现,负责连接各种不同的数据库.jdbc的AP ...
- 《Java大学教程》—第16章 二维数组
多维(Multi-dimensional)数组维数由索引个数决定.常用的数组:一维(one-dimensional)数组.二维(two-dimensional)数组 16.2 创建二维数组索引从 ...
- 查看linux中的TCP连接数
一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议 ...
- JavaScript判断数据类型的方法
typeof操作符 typeof 操作符作用:是用来检测变量的数据类型.对于值或变量使用 typeof 操作符会返回如下字符串. 数据类型undefined的判断示例 变量定义了但未初始化,就是und ...