在DockerToolbox安装docker - Windows 10 各种坑 (吐血超全总结))

感谢各路大神的总结,花了一下午的时间终于解决了这个问题:

  1. 因为是win10的家庭版所以要安装DockerToolbox:

下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

安装部署参考:
https://www.jianshu.com/p/2aa5b05717c6

<meta charset="utf-8">

一、前言

由于本机使用的是win10家庭版操作系统,无法直接Docker for Windows安装,因此只好使用Docker Toolbox。在安装过程中遇到了不少问题,花费了不少时间,才把docker启动起来。在此记录一下过程,以供参考。

二、准备工作

2.1 操作系统

要安装docker,首先要确保操作系统是64位且win7以上的版本。如果操作系统是win10 pro,可以直接使用Docker for Windows安装。本文是基于win10 家庭版安装。

2.2 开启虚拟化

开机进入BIOS,找到“Intel Virtual Technology”类似的选项,设置为Enabled。

注:
如果安装有360安全卫士,最好先关闭它的核晶保护引擎。步骤:打开360安全卫士的主面板,点击左下角的防护中心,在弹出的页面中,点击右上角一个像勋章的图标,关闭核晶保护引擎。

image

2.3 关闭Hyper-V

打开控制面板,依次点击程序 -> 程序和功能 -> 启用或关闭Windows功能,找到Hyper-V,不要勾选,点击确定。如果没找到Hyper-V,就不用管了。

2.4 安装PowerShell

此步骤可以先不用做,如果后面用到了,再来安装不迟。
安装方法:https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-6

三、下载并安装Docker Toolbox

3.1 下载Docker Toolbox

下载地址:https://docs.docker.com/toolbox/toolbox_install_windows/

这个页面除了可以下载Docker Toolbox外,还有Docker Toolbox的安装教程。可以先自行按上面的步骤进行安装,若在之后启动docker时遇到了问题,再回来看剩下的部分也不迟。

3.2 安装Docker Toolbox

双击Docker Toolbox.exe, 一路点击NEXT, 安装路径我设置的是E:\DockerToolbox

image
image
image
image
image

安装完成后,会出现如下几个图标:

image

双击Docker Quickstart Terminal, 如果出现如下页面,说明Docker已启动成功,后面的内容就不需要再看了。

image

四、启动Docker

4.1 创建docker machine

打开power shell(如果还未安装,参考2.4),进入Docker Toolbox的安装目录,可以看到这个下面有docker-machine.exeboot2docker.isostart.sh几个文件。

在power shell中执行如下命令:

$ docker-machine.exe create --driver virtualbox --virtualbox-boot2docker-url=boot2docker.iso default

输出如下:

image

注:docker-machine.exe虽然是个可执行文件,直接双击却没什么用,需要指定参数来配合。

4.2 启动docker machine

在power shell中执行start.sh,会新弹出一个bash窗口,输出如下信息:

$ ./start.sh

image

注:start.sh里面涉及到一些文件路径,这些文件路径是windows的。使用bash来执行可能会出现找不到文件的问题。
比如E:\DockerToolbox\docker-machine.exe需改成/mnt/e/DockerToolbox/docker-machine.exe才能被bash正确的找到。

之所以说是可能会出现,是因为我在使用power shell创建default docker machine后,直接在bash中执行start.sh,结果也能正常运行了。。。

所以,在安装过程中,为保险起见,还是使用power shell吧。

4.3 使用docker

docker machine启动之后,就可以在bash里面正常使用docker的相关命令了。

image

4.4 关闭docker machine

执行如下命令:

$ docker-machine.exe stop default

注:也可以使用Oracle VM VirtualBox来关闭。Oracle VM VirtualBox是用来管理docker machine的图形界面工具,在步骤3.2中可以看到。

4.5 删除docker machine

执行如下命令:

$ docker-machine.exe rm default

也可以使用Oracle VM VirtualBox来删除。

五、镜像加速

可以通过修改镜像仓库地址,加速docker 镜像的拉取。

执行docker-machine ssh default

$ docker-machine ssh default
   ( '>')
  /) TC (\   Core is distributed with ABSOLUTELY NO WARRANTY.
 (/-_--_-\)           www.tinycorelinux.net

设置镜像地址

接下来执行sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://registry.docker-cn.com |g" /var/lib/boot2docker/profile
此处镜像地址使用的是https://registry.docker-cn.com,可自行更换。

执行完毕后,执行exit退出。

docker@default:~$ cat /var/lib/boot2docker/profile

EXTRA_ARGS='
--label provider=virtualbox

'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem

docker@default:~$
docker@default:~$ sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://registry.docker-cn.com |g" /var/lib/boot2docker/profile
docker@default:~$ cat /var/lib/boot2docker/profile

EXTRA_ARGS='--registry-mirror=https://registry.docker-cn.com
--label provider=virtualbox

'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem

docker@default:~$ exit

重启docker-machine

$ docker-machine restart default
Restarting "default"...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar.
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

六、安装问题一览

问题1

双击Docker Quickstart Terminal,提示windows 正在查找bash.exe。如果想亲自查找文件,请点击“浏览”。

问题原因

一般出现这个问题,是因为之前已经安装过了git,且bash.exe的路径与Docker Toolbox中不一致导致的。

解决办法

右击Docker Quickstart Terminal的图标,修改前一段bash的路径。

image

问题2

双击Docker Quickstart Terminal,bash窗口一闪而过。

问题原因

窗口一闪而过,一般是程序运行出错了,需要找到错误信息。通过问题1知道这个快捷方式是使用bash执行start.sh,所以考虑直接在bash中执行start.sh。打开bash.exe,执行start.sh,发现输出如下一段文字:

Docker Machine is not installed. Please re-run the Toolbox Installer and try again.

使用编辑器打开start.sh,会发现如下两端代码:

export PATH="$(win_to_unix_path "${DOCKER_TOOLBOX_INSTALL_PATH}"):$PATH"
VM=${DOCKER_MACHINE_NAME-default}
DOCKER_MACHINE="${DOCKER_TOOLBOX_INSTALL_PATH}\docker-machine.exe"

// ... 省略

if [ ! -f "${DOCKER_MACHINE}" ]; then
  echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again."
  exit 1
fi

发现是因为找不到docker-machine.exe报的错。docker-machine.exe的路径跟DOCKER_TOOLBOX_INSTALL_PATH这个变量有关。查看环境变量,发现确实没有DOCKER_TOOLBOX_INSTALL_PATH。

解决办法

第一个办法是直接在start.sh里面修改DOCKER_MACHINE的地址,但这种方式治标不治本。
第二个办法是手动创建系统变量DOCKER_TOOLBOX_INSTALL_PATH,也是治标不治本
第三个办法是使用docker-machine.exe创建一个docker machine(参考4.1),docker machine创建完成之后,环境变量里就会有DOCKER_TOOLBOX_INSTALL_PATH。

问题3

执行start.sh报与boot2docker.iso相关的错误:

Running pre-create checks...
(default) Unable to get the local Boot2Docker ISO version:  Did not find prefix "-v" in version string
(default) Default Boot2Docker ISO is out-of-date, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v18.09.0
(default) Downloading C:\Users\zhangcm\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.09.0/boot2docker.iso...
Error with pre-create check: "Get https://github-production-release-asset-2e65be.s3.amazonaws.com/14930729/6ae43280-e2b8-11e8-8e32-e857d71a28cd?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190105%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190105T054430Z&X-Amz-Expires=300&X-Amz-Signature=c16df60be023a5e71aa4091d3be41418973da7b46029860b0c7817ef4c6aac22&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dboot2docker.iso&response-content-type=application%2Foctet-stream: dial tcp 127.0.0.1:443: connectex: No connection could be made because the target machine actively refused it."
Looks like something went wrong in step ´Checking if machine default exists´... Press any key to continue...

解决方法

其实Docker Toolbox安装路径下已经有boot2docker.iso文件了。参考4.1,创建一个docker machine。然后再执行start.sh。

如果是提示boot2docker.iso的版本过旧,则需要下载一个新版本。
下载地址:https://github.com/boot2docker/boot2docker/releases
选择一个版本,点击boot2docker.iso文件下载。点击后会自动跳转到另一个域名(https://github-production-release-asset-2e65be.s3.amazonaws.com),需翻墙。

作者:Soclever
链接:https://www.jianshu.com/p/2aa5b05717c6
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2.win10 家庭中文版没有Hyper-V,这样安装一步搞定:
https://blog.csdn.net/weixin_37695006/article/details/91589895?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

  1. win10 hyper-v的开启和关闭
    开启和关闭需要两个步骤:
    在启用或关闭Windows功能中勾选或取消勾选hyper-v功能
    powershell中使用管理员权限运行下面的命令
    关闭
bcdedit /set hypervisorlaunchtype off 

开启

bcdedit /set hypervisorlaunchtype auto

原文链接:https://blog.csdn.net/u013972558/article/details/101785547

  1. 错误1
    image.png

    预创建检查错误:“此计算机没有启用VT-X/AMD-v。在BIOS中启用它是强制性的。
    看起来好像是步骤出错了,检查机器默认是否存在…按任意键继续…
    解决办法:
    启用VT-X/AMD-v:
    https://blog.csdn.net/e_wsq/article/details/8709074
启用VT-x/AMD-V支持。具体方法如下:

重启进入BIOS-->Advanced BIOS Features-->Virtualization-->Disabled(预设值)修改为Enabled,储存(save),重启。【来自网络的办法】

我的计算机是:

重启进入BIOS-->Advanced BIOS Features-->CPU configuration-->Inter Virtualization tech-->Disabled(预设值)修改为Enabled,储存(save),重启。
  1. 错误2:
    image.png

    预创建检查错误:“这台计算机正在运行Hyper-V。当Hyper-V被激活时,VirtualBox不会启动64位的VM。可以使用Hyper-V作为驱动程序,也可以禁用Hyper-V管理程序。(要跳过这个检查,使用——virtualbox-no-vtx-check)”
    参考解决:
    https://qq52o.me/2475.html
    不行再试试这个:
    https://blog.csdn.net/huangshuangda/article/details/96480352

6.错误3
Docker安装问题3 No default Boot2Docker ISO found locally, downloading the latest release(然后下载失败!)


image.png

解决方法:
https://blog.csdn.net/lililuni/article/details/83243062
先删除

image.png

下的boot2docker文件

boot2docker文件 下载地址:https://github.com/boot2docker/boot2docker/releases/
解决方案:去github手动下载提示的版本,提示的版本,提示的版本,不是最新版本。

然后放在提示的 /Users/apple/.docker/machine/cache/目录中,记得一定要重启docker才会生效
放到

image.png

参考:
https://blog.csdn.net/lastsweetop/article/details/78095635?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8

最后关机重启,重启,重启!重要的事情吼三遍!
再次双击打开


image.png

胜利的曙光就在眼前!


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容