众所周知,Win10中开始提供Linux子系统,即Windows Subsystem for Linux,简称WSL,它可以让我们在Windows系统使用Linux系统,自从有了这个新功能以后,博主果断地放弃双系统的方案,因为折腾起来实在花费时间。关于如何使用WSL,网上有非常多的文章可以参考,这里不再赘述。今天想说的是,WSL下使用Docker遇到的各种坑。

装完WSL以后,对各种编译环境的使用相当满意,最近在研究日志可视化平台ELK,其中需要使用Docker来搭建环境,一顿sudo操作猛如虎,快速安装完Docker环境,结果发现熟悉的命令行居然无法正常工作,是可忍孰不可忍。

sudo apt-get update
sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \"deb [arch=amd64] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) \stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

第一个错误是,你按照官方文档安装完Docker,输入docker -v,一切显示正常的时候,此时,如果会执行docker run hello-world命令,会出现以下错误:

$ docker run hello-world docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'.

此时,你可能会尝试通过执行systemctl start docker命令来启动Docker服务,因为错误信息告诉我们,Docker的守护进程没有启动,可你会发现这样依然报错。可是为什么呢?明明Docker都在WSL里安装成功了啊,事实上除了docker -v不需要依赖守护进程,其余的命令都需要依赖守护进程,而WSL恰恰是不支持docker-engine的,所以,一种曲线救国的思路就是,让WSL去连接宿主机上的docker engine。果然,还是要安装Docker for Windows啊!那么,剩下的事情变得就非常简单啦,确保系统开启Hyper-V,然后安装Docker for Windows,并打开对宿主机Docker的监听,这些相信玩过Docker的人都会啦!

接下来,我们给WSL中的Docker设置宿主机的地址,在终端中输入下列命令即可:

export DOCKER_HOST=tcp://localhost:2375

此时,我们执行docker run hello-world命令,如果不出意外的话,我们会看到下面的画面,这说明我们的Docker环境已经正常工作啦:

博主按捺不住内心的激动,果断安装ELK全家桶,体验了下Kibana的可视化界面,开始思考:如何把存储在Mongodb中的日志数据放到ElasticSearch中。当然,这都是后话啦,因为博主马上发现了WSL中Docker的第二个坑,那就是终端关闭以后,针对宿主机的Docker连接就结束了。

OK,为了解决这个问题,我们继续在终端中输入以下命令:

echo "export DOCKER_HOST=tcp://localhost:2375" >> ~/.bashrc && source ~/.bashrc

在使用Docker的过程中,最令人困惑的部分当属分区的挂载,因为你时刻要搞清楚,它到底表示的是容器内部的分区,还是宿主机上的分区。对于运行在WSL中的Docker而言,它会采用类似/mnt/c/Users/Payne/这样的更符合Linux习惯的路径,而Docker for Windows则会使用类似/c/Users/Payne/这样更符合Windows习惯的路径。因此,如果你在使用Docker的过程中,需要处理分区挂载相关的东西,一个比较好的建议是修改WSL的配置文件(如果不存在需要自行创建):

sudo nano /etc/wsl.conf
[automount]
root = /
options = "metadata"

好了,以上就是在使用WSL中的Docker搭建ELK全家桶过程中遇到的问题的梳理,从体验上来讲,我个人会把Linux平台相关的工作渐渐转移到WSL上,因为安装双系统总会分散你的精力去处理维护相关的事情,虽然装系统对程序员来说都不算是个事儿,可我内心依旧排斥自己被贴上“修电脑”的标签。我会在后续的博客中分享.NET Core下日志分析平台构建相关内容,希望大家可以继续关注我的博客,这篇文章到此结束,谢谢大家!

WSL下Docker使用踩坑小记相关推荐

  1. AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史

    AspNetCore3.1 在CentOS 用docker发布 踩坑辛酸史 发布场景:windows上虚拟机 CentOS(7.8)环境 创建AspNetCore3.1 项目,加入Docker支持 首 ...

  2. 配合Opencv2.4.9,CMake3.12.1和VS2010在win10下构建项目踩坑记录

    配合Opencv3,CMake和VS2010在win10下构建项目踩坑记录 参考https://blog.csdn.net/qq_26623659/article/details/78322782 博 ...

  3. Windows环境下PyTorch_geometric安装踩坑

    Windows环境下PyTorch_geometric安装踩坑 pytorch geometric在windows环境下安装非常恶心,莫名其妙各种报错.本帖针对GCC的编译error提供解决方案. 一 ...

  4. Docker for windows挂载文件到Nginx目录踩坑小记

    前言:因为最近在学Docker,通过菜鸟教程的文档,在学到Docker安装Nginx时,挂载目录运行容器时碰到了错误,一直跑不起来,浪费了很多时间,这里记录中途的解决方法 相关教程: 菜鸟教程 这是菜 ...

  5. MySql 踩坑小记

    MySql 踩坑一时爽,一直踩啊一直爽... 以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在第二 ...

  6. MySql 踩坑小记 1

    MySql 踩坑一时爽,一直踩啊一直爽... 以下记录刚踩的三个坑,emmm... 首先是远程机子上创建表错误(踩第一个坑),于是将本地机器 MySql 版本回退至和远程一致(踩第二个坑),最后在第二 ...

  7. 阿里云服务器SSH远程连接与踩坑小记

    当你拥有了一台云服务器,就得去玩它,要玩它的话,远程连接就太重要啦,这篇文章就主要记录怎么实现远程连接阿里云服务器: 为什么要强调一下是阿里云服务器呢?自己配置的虚拟机一般就直接用户名+密码登录,但是 ...

  8. Go Gin 踩坑小记

    目录 代理 Mysql POST 刷B站看到了写G站的推荐视频,心里没忍住点进去看了看,哎觉得Gin这个框架和Flask有点像哎,于是准备按照教程小试一下,没想到遇到这么多坑,在此记下来为以后Gola ...

  9. Ubuntu下Astro Pro配置openni踩坑小记

    https://developer.orbbec.com.cn/technical_library.html?id=30 这是官方的文档,其实写的不太详细,稍微记录一下我碰到的困难和方法 首先下载op ...

最新文章

  1. input限制文字个数但是输入中文时会被切断_Python文字转换语音,让你的文字会「说话」抠脚大汉秒变撒娇萌妹...
  2. 机器学习入门--进阶资料和流程建议
  3. 新买的笔记本电脑怎么分盘_笔记本电脑该如何保养,延长使用寿命
  4. QT的QScroller类的使用
  5. 修改WordPress中上传附件2M大小限制的方法
  6. CentOS 5.2 安装Apache服务器后无法访问解决方法
  7. 博客园上海地区活动——LinkCoder主题社区第二期:淘宝服务化架构的设计和实践...
  8. RL笔记 : Lecture 3: Model-free Prediction and Control
  9. Extjs 4.x 得到form CheckBox的值
  10. 【字符串算法1】 再谈字符串Hash(优雅的暴力)
  11. vue-meta-info动态设置meta标签
  12. java中rhino什么用_使用require.js和Java / Rhino解析模块
  13. 23种设计模式之适配器模式代码实例
  14. Dell PowerEdge RAID控制器存在一个潜在问题
  15. idea下配置tomcat运行jpress
  16. OpenGL 渲染正方体
  17. matlab频谱分析中振幅的物理意义,频谱图分析的意义,频谱图的物理意义是什么呢,频率的振幅能够反映什么物理意义呢?(例如下图)请哪位大师指点,不胜感激!...
  18. Ext3、Ext4、FAT、FAT32、NTFS、exFAT、Sparse、Raw
  19. C++ register 关键字
  20. C# 文件直接打印功能

热门文章

  1. 评估指标(Metric)(三)
  2. NLP(CAS10年NLP课程note)
  3. 【小程序项目开发-- 京东商城】uni-app之自定义搜索组件(中)-- 搜索建议
  4. nextcloud服务器处于维护模式,Nextcloud更新遇到Downloading错误解决
  5. 学校运动会计算机系仪仗队入场词,运动会入场方阵解说词
  6. 黑莓9000支持Java吗_黑莓革命 BlackBerry 9000功能深度评测
  7. 幻想-FLEX 3基础视频教程.
  8. 苹果iPhone6为何拯救不了富士康?
  9. Android重复点击同一个导航栏失效的解决方案
  10. 带赖子的麻将胡牌算法Java_有人讨论下麻将胡牌,出牌算法吗,求思路