使用 Docker Toolbox在Win7安装Docker
为什么要安装Docker呢?相信很多小伙伴都知道,我们平时的开发环境需要花时间来搭建,而Docker中有许多的镜像,可以看做是那些已经搭建好的模板,我们只需要把镜像拉下来,运行一下,修改配置就完成了软件的安装,非常的痛快,而且软件的更换版本与卸载更是很好处理。
简单来说,使用Docker我们可以轻松的完成软件的安装、更换版本与卸载。
下载&安装
下载
就笔者搭建的时候来说,使用阿里云的下载地址快一点,但是github的版本相对新一些。具体去哪里下载看读者怎么选择了。
安装
安装就很简单了,Docker Toolbox会在你的电脑安装以下东西:
Docker Client for Windows (Docker的可视化界面工具 Kitematic (Alpha))
Docker Toolbox management tool and ISO(Docker Toolbox的管理工具和一个Docker虚拟机的ISO文件)
Oracle VM VirtualBox (虚拟机创建以及管理的软件,如果电脑已经安装过,安装的时候反选不安装该组件)
Git MSYS-git UNIX tools (电脑已经安装过Git的一定要反选掉,自带安装的git版本太低了)
笔者这里要提一句,Docker Toolbox是Docker为了低版本的Windows做的兼容产品,所以肯定没有Docker Desktop强大。笔者在使用的时候遇到了一些坑在最后与大家分享一下。
使用
启动
双击桌面图标:
出现以下画面说明启动成功。
Docker虚拟机实例管理
常用命令
## 查看所有虚拟机实例
docker-machine ls
## 创建一个虚拟机实例
### 使用 --driver 指定使用本地虚拟机的驱动,这里使用上面安装的virtualbox
### 使用 --virtualbox-boot2docker-url 指定使用ISO镜像创建Docker虚拟机。这里填了本地安装带的ISO文件。
### 使用 --engine-registry-mirror 提前指明docker将要使用的镜像加速器地址。(请更换为自己想要配置的,或者移除该配置项)
### 最后 default 则是创建Docker虚拟机实例的名字
docker-machine create --driver virtualbox --virtualbox-boot2docker-url "file://D:/software/Docker Toolbox/boot2docker.iso" --engine-registry-mirror https://xxx.mirror.aliyuncs.com default
## 停止一个Docker虚拟机实例
docker-machine stop default
## 启动一个Docker虚拟机实例
docker-machine start default
## 重启一个Docker虚拟机实例
docker-machine restart default
## 连接到一个Docker虚拟机实例
docker-machine ssh default
使用时出现的问题以及解决方案。
启动的时候界面一闪而过
笔者遇到这个问题的时候是因为,笔者在电脑上已经安装过Git,Git在安装的时候笔者没有使用默认路径,而是自己指定了一个新位置,这样导致启动命令找不到Git安装的bash.exe
文件。
解决方案:
既然是找不到bash.exe
文件,那么重新指定一下就可以了。
右击启动图标,选择属性。
上图可以看到在 目标
上配置了bash.exe
文件的位置以及后面的参数,后面的参数我们不要动,只需要确保这个bash.exe
文件可以被访问到就可以了。
启动出现错误
错误截图如下:
出现这个错误的原因是:Docker Toolbox在当前版本安装好后,本地并不会为我们生成一个Docker运行实例。需要我们自己去手动创建,具体创建命令可以查看上面 章节的Docker虚拟机实例管理命令
docker 容器的端口映射问题
由于在这里我们使用了Docker Toolbox,在Windows兼容平台下使用Docker,我们实际操作的Docker实例放在虚拟机里了,在Windows中我们使用本地命令操作的时候虚拟机里的Docker实例。至于端口映射的话,自然是由docker容器映射到了虚拟机里,并没有映射在宿主机(Windows电脑)上,这里提供两种解决方法:
-
既然docker容器是映射到了上面创建的Docker虚拟机里,我们可以使用虚拟机的ip地址进行访问。
tips: 虚拟机的ip如何查找,使用命令
docker-machine env default
-
使用端口转发功能,这里简单介绍一个Windows平台的端口转发命令。
比如说我们使用要把本机(127.0.0.1)的3306端口映射到虚拟机(192.168.99.100)的3306端口
netsh inter portproxy add v4tov4 listenport=3306 listenaddress=127.0.0.1 connectaddress=192.168.99.100 connectport=3306 tcp
docker 及 docker-compose 文件挂载后不会与容器内文件同步
我们在使用docker的时候通常会将虚拟机内的文件和宿主机的文件通过挂载的方式便于以后使用。
但是由于使用了 docker toolbox,docker的实例是在virtualbox的虚拟机内部,而通常我们使用的文件都是在windows系统上,所以文件在使用docker命令进行文件夹的volumes
的时候,往往会出现容器内部的数据文件映射到虚拟机内部而不会关联到windows系统上的文件。所以我们要使用virtualbox建立一个共享文件夹建立windows系统与虚拟机之间文件的同步过程。具体步骤如下:
-
打开虚拟机的共享文件夹设置
1587199274861.png -
添加一个共享文件夹
1587199401224.png这里注意:
选择的文件夹的路径不能有大写字母、空格以及特殊符号。
-
共享文件夹的名字与路径有关系的,比如:
路径: D:\document\docker-virtual-machine 名字: d/document/docker-virtual-machine
就是将路径里的
D:
->d
,\
->/
最后使用重启命令
docker-machine restart default
重启虚拟机以让更改生效。
修改 Docker虚拟机为自己想要的IP地址
由于官方并没有提供指定静态路径的方法,这里我们需要曲线救国。参考资料地址:
使用命令
docker-machine ssh <default|名称>
进入docker虚拟机内部执行以下命令,将会创建或覆盖 bootsync.sh 文件,在虚拟机启动的时候执行该shell文件,修改虚拟机ip为
192.168.99.100
,读者可以更换为自己想要的IP。(tips:注意更换网关地址以及子网掩码)
sudo tee /var/lib/boot2docker/bootsync.sh <<EOF
sudo more /var/run/udhcpc.eth1.pid | xargs kill
sudo ifconfig eth1 192.168.99.100 netmask 255.255.255.0 broadcast 192.168.99.255 up
EOF
- 重启docker-machine实例或执行以下命令(使用上面中间两条命令)
sudo more /var/run/udhcpc.eth1.pid | xargs kill
sudo ifconfig eth1 192.168.99.100 netmask 255.255.255.0 broadcast 192.168.99.255 up
- 如果发生ip变更,需要重新生成dockr-machine实例的ssh证书
docker-machine regenerate-certs <default|实例名称>