前言

Windows10 内置了Linux系统:WSL (Windows Subsystem for Linux, 又称Bash for Windows)。可以方便地在Win10里使用Ubuntu等Linux系统的命令行,本篇文件使用Ubuntu作为讲解。

docker:Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。

解决方案

问题

在windows10子系统中是无法直接安装成功docker的,因为win10子系统是运行在win10系统只上的,不是直接基于底层和硬件的;但是docker的运行时要基于底层很多东西的。

解决

所以我们这篇文章的解决方案是在win机器上安装好Docker in Windows,然后在win10 子系统中通过remote Docker daemon的方式连接Docker。

这样做的意义就是可以使用熟悉的Linux命令行、文件系统和docker,又能不暗转虚拟机和Linux。

架构

win10子系统Ubuntu–>docker客户端 –> remote Docker daemon –> Docker in Windows

操作

安装Docker in Windows

下载

安装

直接使用默认配置,下一步-下一步安装就好了

安装win10子系统Ubuntu

以下面步骤勾选windows10的“适用于Linux的Windows子系统”,然后需要系统重启。

docker运行windows镜像 linux linux的docker 部署windows镜像_Docker

docker运行windows镜像 linux linux的docker 部署windows镜像_Docker_02

重启之后在windows应用商店中搜索Linux安装自己喜欢的Linux系统,如下图。

docker运行windows镜像 linux linux的docker 部署windows镜像_docker_03

子系统Ubuntu中安装docker客户端

参考官网文档进行安装

安装Docker Compose:

# Install Python and PIP.

sudo apt-get install -y python3 python3-pip

# Install Docker Compose into your user's home directory.

pip install --user docker-compose

在子系统Ubuntu远程Docker in Windows

最关键的一行命令,打开Bash:

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

不通过deamon连接的话,你在Ubuntu里运行docker,就会出现错误:

docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

验证Docker启动成功:

docker info

docker-compose --version

注意问题

这时我们的docker,其实是安装在windows中,Linux只是作为远程客户端来链接windows的docker,windows和Linux最大的区别就是文件系统的不同。所以在启动容器的时候如果需要映射目录,需要在windows的CMD或者PowerShell对容器进行启动。