文档章节

Linux on Windows(WSL)上使用docker

fangYC
 fangYC
发布于 2018/07/27 16:10
字数 970
阅读 2500
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

Linux on Windows(WSL)上使用docker

环境

windows 10家庭中文版 1709

步骤

启用并安装(Ubuntu)Linux on Windows(具体方法请使用搜索引擎)

  1. 在“设置->更新和安全->针对开发人员”中使用开发人员模式

  2. 开始菜单中搜索“启用或关闭 Windows功能”,找到“适用于Linux的Windows子系统”打上勾

  3. 进入应用商店,搜索Ubuntu,找到Ubuntu 18.04并获取

  4. 安装好后直接在开始菜单中找到并打开,就可以使用了,如果第一次打开显示installing,那就关掉,等待一会后再开

安装Docker for windows或者docker toolbox

因为Linux on Windows中无法运行docker的deamon,所以还是需要在windows上安装一个docker

  1. 下载Docker for windows(下最新版本,这时候docker是18.06.0-ce),如果不是win10专业版和企业版而是家庭版那就只能下载docker toolbox,笔者下的是docker toolbox

  2. 按照提示安装好之后会有Docker Quickstart Terminal、Kitematic、Oracle VM VirtualBox三个快捷方式,先启动Oracle VM VirtualBox,然后启动Kitematic,根据提示操作(不同版本可能有所不同),最后会在VM上看到一个名为default的虚拟机

  3. 这时候启动Docker Quickstart Terminal就可以直接使用docker了,不过呢,dockerhub的源比较慢,最好换一个,笔者换的是DaoCloud的,步骤如下:

    1. 在Docker Quickstart Terminal命令行执行docker-machine ssh default(default是machine实例的名字,可以更改)进入VM bash
    2. sudo vi /var/lib/boot2docker/profile
    3. 在--label provider=virtualbox的下一行添加--registry-mirror daocloud加速器地址
    4. 重启docker服务:sudo /etc/init.d/docker restart或者重启VM:exit退出VM bash,在Windows命令行中执行docker-machine restart

ubuntu更换国内源

笔者更换的是清华的源,ubuntu自带的源是美国的,会比较慢 注意,只用于bionic发行版

  1. 进入WSL

  2. 备份

    	sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
    
  3. 打开文件

    	sudo vim /etc/apt/sources.list
    
  4. 用以下内容替换

    	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic main multiverse restricted universe
    	deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic main multiverse restricted universe
    	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-security main multiverse restricted universe
    	deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-security main multiverse restricted universe
    	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates main multiverse restricted universe
    	deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates main multiverse restricted universe
    	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-proposed main multiverse restricted universe
    	deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-proposed main multiverse restricted universe
    	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports main multiverse restricted universe
    	deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports main multiverse restricted universe
    
  5. 更新apt

    	sudo apt update
    

提供一些镜像地址列表 Debian https://www.debian.org/mirror/list Ubuntu http://wiki.ubuntu.org.cn/源列表

根据官网给WSL安装docker

这时候是docker18.06.0-ce

配置WSL

  1. 打开~/目录下的.bashrc文件 vim ~/.bashrc

  2. 加入以下内容

    #配置docker的连接,适用于docker toolbox
    export DOCKER_TLS_VERIFY=1
    export DOCKER_HOST=tcp://192.168.99.100:2376
    export DOCKER_CERT_PATH=/mnt/c/Users/[你的windows系统用户名]/.docker/machine/certs
    
    #因为vm中与windows的共享文件夹目录是/c/Users/,而在Linux on Windows中是/mnt/c/,所以为了docker可以顺利运行(docker客户端会取docker-compose文件的绝对目录作为参数传到服务端使用),需要把/mnt/c挂载到/c/,不可以用符号链接,因为docker不支持符号链接
    #如果有其他挂载目录,需要自行修改脚本
    if ! mountpoint -q '/c';then
      if [ ! -d "/c" ] && [ ! -f "/c" ]; then
        sudo mkdir -p /c
      fi
      if [ -d "/c" ] && [ ! "$(find / -maxdepth 1 -type l | grep '/c' )" ] && [ ! "$(ls -A /c)" ]; then
        sudo mount --bind /mnt/c /c
      else
        echo "没有挂载/mnt/c到/c"
      fi
    fi
    
  3. 这时候就可以在Linux on Windows中操作docker了,注意,如果用到本地文件(docker-compose文件或者容器挂载目录等)的话必须在/c目录下操作,就算是/mnt/c都不行

© 著作权归作者所有

fangYC
粉丝 0
博文 14
码字总数 14614
作品 0
揭阳
程序员
私信 提问
Docker 将推出 Docker Desktop for WSL 2

微软最新推出的 WSL 2 在架构方面发生了重大的变化:它们提供了一个在轻量级 VM 中运行的真正 Linux 内核。 对于这个变化以及这项技术,Docker 公司已将其应用到 Docker Desktop for Windows...

局长
06/18
13.3K
26
Win 10 更新,Linux 内核的 WSL 2 开始上线

微软今天发布了 Windows 10 build 18917 Insider 版本,其中最引人关注的是内核采用 Linux 重构的 WSL 2(Windows Subsystem for Linux)现在已经可用。 WSL 2 是上个月微软在 Build 2019 上...

h4cd
06/13
31.5K
65
微软在 Windows 10 中搞了个真正的 Linux 内核

微软在 5 月 6 日推出了全新的终端 Windows Terminal,这是一个全新的、流行的、功能强大的命令行终端工具。包含很多来社区呼声很高的特性,例如:多 Tab 支持、富文本、多语言支持、可配置、...

h4cd
05/07
60.4K
85
对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷

原文观点 今日 Linux 中国发布了一篇文章 《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》 。该文主要观点引用如下: Windows Terminal 是一个套在 Windows 操作系统原本的 CMD、P...

作者: Locez
05/08
0
0
Win10: WSL&Minikube&Helm食用指南

最近拿到新的工作机,需要搭一个win10上面的minikube 和docker的开发环境。做个记录。 整体思想是在WSL(Microsoft-Windows-Subsystem-Linux)中使用kubectl 和docker的 Client端,链接使用hyp...

书书曾
2018/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JVM性能调优的6大步骤,及关键调优参数详解

JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。 1.Full GC 会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,...

一只会编程的狼
18分钟前
6
0
并发和并行性有什么区别?

并发和并行性有什么区别? 示例被赞赏。 #1楼 并发性:具有共享资源潜力的多个执行流 例如:两个线程争用一个I / O端口。 平行主义:将问题分成多个相似的块。 例如:通过在文件的每半部分上...

javail
20分钟前
4
0
(推荐使用)提高开发效率工具集合

提高开发效率工具集合(推荐使用) 一、Hutool工具类 官网地址:https://www.hutool.cn/ Github地址:https://github.com/looly/hutool/ Gitee 地址:https://gitee.com/loolly/hutool/ 文档参...

明德先生
24分钟前
4
0
java并发-缓存一致性协议和内存屏障的思考和理解

################这是之前的思考 内存屏障只是保证清空流水线,如何保证高速缓存的内容更新到最新或刷新到主存呢?这个问题突然想到了,不知道这个需要怎回答。 内存屏障保证的CPU执行执行序...

萧默
27分钟前
5
0
类型名称后面的括号是否与new有所不同?

如果“测试”是普通类,则之间是否有任何区别: Test* test = new Test; 和 Test* test = new Test(); #1楼 new Thing(); 很明显,您想要一个构造函数,而new Thing; 表示您不介意是否未调...

技术盛宴
51分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部