Docker for windows、Docker for Mac和Docker Toolbox

1.Docker for windows不支持windows7/8/10家庭版(支持10专业版)。Docker Toolbox都支持Windows和Mac。Docker for Mac 支持Mac10.12及以上。

2.Docker for windows和Docker Toolbox区别:

Docker Toolbox

Docker for windows、Docker for Mac和Docker ToolboxDocker for windows、Docker for Mac和Docker Toolbox

docker for mac 与Docker for windows

相比Docker Toolbox启动时不需要再使用dokcer-machine设定启动的默认的环境,省去了使用virtualbox的过程。

 

docker运行是需要linux内核的,为了能在非linux系统使用docker,官方早期提供的Toolbox方案就是使用虚拟机启动一个linux,然后在这个虚拟机中运行docker,免费的虚拟机当时使用最多的就是virtualbox。
现在有原生版本的docker了,在windows上是使用的windows10内置的hyper-v虚拟机,所以不在需要安装virtualbox,但是对系统的要求也提高了,因为hyper-v的虚拟机只有部分版本的windows10才有内置,比如家庭版的windows10就没有hyper-v组件,不能运行原生版本的docker,还是只能通过toolbox。

 

我们在调用 Windows 上面的 docker 命令时,实际上是在调用宿主机(VirtualBox)上的 docker 命令.从而导致了有些地方和我想象的不一致.
比如修改默认的镜像加速源,在Linux系统上修改镜像加速源的方式一般是修改一个配置文件即可,但是在 Windows 系统上无法使用.只能在创建Docker宿主机的时候指定镜像源(当然在创建以后进入到宿主机内部修改配置文件也可以,但是比较麻烦.):

# --engine-registry-mirror 指定了对应的镜像加速源
docker-machine create \
--engine-registry-mirror=https://f8u****.mirror.aliyuncs.com \
-d virtualbox default

# 通过 docker-machine inspect default 查看创建的宿主机的信息
docker-machine inspect default

另外一个比较坑的地方就是在需要向容器内挂载相应的主机目录时,需要首先将响应的目录挂载到宿主机docker-machine当中,然后才能挂载到容器当中

# 在创建宿主机 docker-machine 的时候挂载主机中的目录
docker-machine create \
--engine-registry-mirror http://hub-mirror.c.163.com \
--virtualbox-share-folder "D:\WorkSpace:/d/WorkSpace" \
default
# 在创建并运行容器的时候挂载宿主机的目录
docker run -i -v "/d/WorkSpace:/home/spacevim/work" \
spacevim/spacevim
# 或者以下命令
winpty docker run -it \
-v /home/docker/work:/home/spacevim/work \
spacevim/spacevim /bin/bash

需要注意的是,当主机的目录没有被挂载到宿主机 docker-machine 上,而在创建容器的时候想要挂载宿主机的相应的目录时,只会在宿主机上面创建一个空的目录。