【手工解决】使用 DockerToolbox 创建指定版本的 Docker 虚拟机环境

怎样用DockerToolbox(Docker machine)创建旧版本的Docker虚拟机?

 

# 我用的电脑环境是Win7 64位操作系统,

原来使用的 Docker 版本是1.13.1,现在是17.05.x-ce版本了

# 运行docker-machine 时会自动检查并下载最新的 boot2docker.iso 版本
# 而实际生产中,不可能总是使用最新的版本,
# 一般在一定的时期内,会使用固定的稳定版本.

# 比如用户想尝试使用 Rancher,因为Rancher只支持稳定的Docker版本,

# 所以只能安装以前的稳定版1.12.3+,在试用的过程中,用户遇到的问题会少很多。

# 那怎么办呢? 怎样用DockerToolbox Docker machine 创建旧版本的Docker虚拟机呢?

# Docker Machine提供了--virtualbox-boot2docker-url 参数,

# 我们可以自己搭建网站,存放指定版本的Boot2docker.iso文件,供Docker machine下载使用。

 

# 但实际安装操作过程中,总是磕磕绊绊,遇到好多报错,对于初学者来说确实头疼,

# 现将整个过程中遇到的问题及解决办法整理如下:

 

# 大致步骤及遇到的主要问题:
# 1 使用WAMP工具包,快速创建一个内部网站,将所需版本的 boot2docker.iso 文件拷贝到网站目录中;
# 2 使用docker-machine 创建虚拟机时,要带上参数:--virtualbox-boot2docker-url

#       问题1 创建虚拟机报错?

#       问题2 启动虚拟机无响应?

#       问题3 新建虚拟机目录下的文件Boot2docker.iso大小为0(5KB)?

#       问题4 怎样正确挂载Boot2docker.iso 和disk.vmdk文件?

#       问题5 查看虚机状态时,显示的信息不对?

#       问题6 怎样重新生成秘钥?


# 安装 WAMP Server ,创建一个Web服务器,安装非常方便,直接下一步即可完成安装。

# 默认安装后,Web网站的目录为c:\wamp\www可以将所需要版本的 boot2docker.iso 文件

# 直接放到c:\wamp\www目录下,也可以放到二级目录下,引用时注意即可。

 

 



$docker-machine create \
-d virtualbox \
--virtualbox-boot2docker-url=http://192.168.0.103 \
docker1

# 执行创建 Docker 虚拟机的命令
# 最后面有报错信息(问题1)



[email protected] MINGW64 ~
$ docker-machine create -d virtualbox -virtualbox-boot2docker-url=http://192.16
8.3.201 docker1
Running pre-create checks...
(docker1) Boot2Docker URL was explicitly set to "http://192.168.0.103" at create
 time, so Docker Machine cannot upgrade this machine to the latest version.
Creating machine...
(docker1) Boot2Docker URL was explicitly set to "http://192.168.0.103" at create
 time, so Docker Machine cannot upgrade this machine to the latest version.
(docker1) Downloading C:\Users\catty\.docker\machine\cache\boot2docker.iso from
http://192.168.0.103...
(docker1) 0%....10%....20%....30%....40%....50%....60%....70%....80%....90%....100%
(docker1) Creating VirtualBox VM...
(docker1) Creating SSH key...
Error creating machine: Error in driver during machine creation: C:\Program File
s\Oracle\VirtualBox\VBoxManage.exe storageattach docker1 --storagectl SATA --por
t 0 --device 0 --type dvddrive --medium C:\Users\catty\.docker\machine\machines\
docker1\boot2docker.iso failed:
VBoxManage.exe: error: Could not get the storage format of the medium 'C:\Users\
catty\.docker\machine\machines\docker1\boot2docker.iso' (VERR_NOT_SUPPORTED)
VBoxManage.exe: error: Details: code VBOX_E_IPRT_ERROR (0x80bb0005), component M
ediumWrap, interface IMedium, callee IUnknown
VBoxManage.exe: error: Context: "OpenMedium(Bstr(pszFilenameOrUuid).raw(), enmDe
vType, enmAccessMode, fForceNewUuidOnOpen, pMedium.asOutParam())" at line 179 of
 file VBoxManageDisk.cpp
VBoxManage.exe: error: Invalid UUID or filename "C:\Users\catty\.docker\machine\
machines\docker1\boot2docker.iso"


# 显示的虚拟机的状态
# 此时显示新建的虚拟机处于停止运行状态,

[email protected] MINGW64 ~
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default             *        virtualbox   Running   tcp://192.168.99.100:2376           v1.13.1
docker1           -        virtualbox   Stopped                                       Unknown


# 启动新建的 Docker 虚拟机
# 直接运行start命令,虚拟机无响应(问题2),



[email protected] MINGW64 ~
$ docker-machine start docker1
Starting "docker1"...
(docker1) Check network to re-create if needed...
(docker1) Waiting for an IP...

# Windows 7界面中,VM VirtualBox 显示启动错误信息,

 

# 到目录中查看, boot2docker.iso 的文件大小为0,(问题3)
# 解决:这个问题3好解决,直接拷贝指定版本的 boot2docker.iso 覆盖0字节的同名文件。

 

 

# VM VirtualBox 图形化管理界面中,新创建的虚拟机的配置中没有磁盘和启动iso,(问题4)

# 解决:这个问题4也好办,可以手工添加,创建两个磁盘,光驱和可写的硬盘,

# 分别挂载到SATA 0 和 SATA1接口上。

# 手工配置光盘镜像 boot2docker.iso 在SATA0 上,
# 可写磁盘 disk.vmdk 在 SATA 1 上,再次启动:

 

[email protected] MINGW64 ~

$ docker-machine start docker1
Starting "docker1"...
(docker1) Check network to re-create if needed...
(docker1) Waiting for an IP...
Machine "docker1" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-m
achine env` command.

# 能够正常启动


# 由于是手动设置磁盘的,系统提示IP地址变化,执行ls时,显示虚拟机的信息不对,(问题5)

# 提示“不能查询Docker的版本”“未知的机关签署的证书”(问题5)。

[email protected] MINGW64 ~
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default               *        virtualbox   Running   tcp://192.168.99.100:2376           v1.13.1
docker1             -        virtualbox   Running   tcp://192.168.99.101:2376           Unknown   Unable to
 query docker version: Get https://192.168.99.101:2376/v1.15/version: x509: certificate signed by unknown authority


# 解决:问题5也好办,无法正确显示docker版本,需要重新生成密钥,

# 解决:问题6,重新生成秘钥 执行的命令是 docker-machine regenerate-certs


[email protected] MINGW64 ~
$ docker-machine regenerate-certs docker1
Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
Regenerating TLS certificates
Waiting for SSH to be available...
Detecting the provisioner...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...


# 再次显示 Docker 虚拟机的状态

[email protected] MINGW64 ~
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default               *        virtualbox   Running   tcp://192.168.99.100:2376           v17.05.0-ce
docker1             -        virtualbox   Running   tcp://192.168.99.101:2376           v1.13.1

#一切正常,v17.05.0-ce版与v1.13.1版的虚拟机同时存在。

 

 

 

参考链接:

WAMP Server下载地址(官方):http://www.wampserver.com/en/  

WAMP Server下载地址(网盘):http://pan.baidu.com/s/1qYPnnC4  

WAMP Server下载地址(其他):http://dl.pconline.com.cn/download/52877-1.html 

 

Docker Toolbox for Win7下载地址:(下载较快)

https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/   

Boot2Docker.iso 下载地址:(网盘下载)

http://pan.baidu.com/s/1hrTqKcs 

Docker Toolbox 官方下载地址:(下载较慢)

https://www.docker.com/products/docker-toolbox 

Boot2Docker.iso 官方下载地址:(下载较慢)

https://github.com/boot2docker/boot2docker/releases