背景
第一次听到docker这个词是15年7月份,老板让项目组老大看看docker相关技术,据说是可以提高公司项目部署的效率,不过遗憾的是的当时已经准备快离职了,所以没能早一点一睹docker容器的庐山真面目。现在看来docker的热度也不是一年之前能比的了,不过也激发了我对技术的好奇心,决定挖这样一个坑,来激励自己去研究一下docker的内部原理和实际应用。本篇文章记录安装过程中出现的一些问题和解决过程,重点在于启动过程中的几个错误。
注:不同的系统和硬件环境下安装文件和过程不太一样,所以:
- 采用Docker Toolbox方式安装的请绕行。
- 以下适用于Docker for Windows Beta的安装,详情请看下面「安装-环境要求」。
安装
环境要求(非常重要!)
- 系统环境
64bit Windows 10 Pro, Enterprise and Education (1511 November update, Build 10586 or later)。在cortana输入框键入winver,然后回车enter即可查看系统版本。 - 内存大小
最好是>4G内存,后面为docker分配的内存至少是1G,太小的内存可能导致启动不成功。 - Hyper-V开启
如果不支持Hyper-V虚拟化,就只能用 Docker Toolbox方式安装了。查看是否支持Hyper-V方式如下,打开「任务管理器-性能」,默认是禁用的(如何开启见下方「启动-关于虚拟化未开启错误」),如下:
下载&安装
进入页面,点击Get Docker for Windows,下载完InstallDocker.msi文件直接安装即可,直到finish(launch Docker默认打勾),安装过程很快。
启动
关于「虚拟化未开启」错误
安装完之后docker会尝试第一次启动,如果电脑Hyper-V之前未开启,docker会提示开启Hyper-V并且电脑随即进入重启,我在重启的时候忘记进入BIOS设置了,结果重启完之后,(因为docker安装完是设置开机自启动的)docker启动的时候就出现下面错误了。
解决方式:再次重启,并且过程中进入BIOS,不同的电脑进入BIOS方式不同,Lenovo是按住F2,照下图操作即可:
关于「Unable …Exit 1」错误
当你觉得修改完BIOS,觉得已经万事大吉的时候,再重新Start docker的时候,可能又会如下错误,我在docker(1.12.0) build 5579的版本中遇到,错误码如下:
解决方式:打开网络与共享中心,可以看到多了一个关于docker虚拟机的vEthernet(DockerNAT)连接,点击进入,配置虚拟机的DNS网关并且禁用IPV6,如图:
配置完之后,再启动错误码就会消失了。
关于「Not enough memory」错误
对于内存较低的可能出现启动时内存不够而导致失败的情况,因为docker默认是配置2G内存。
解决方式:右键docker图标-setting-Advanced,如图:
可以尝试不断减少Memory,直到启动OK,Docker正确启动后,左下角显示running。
Demo演示
下面尝试run两个container,第一个是hello-world,第二个是webserver。在执行docker run containerName命令之后,Docker会先在本地检查对应是否存在该镜像,如果不存在再到Docker Hub上检查,如果有则立即下载到宿主机。
hello-world
在cmd或者PowerShell中输入:docker run hello-world,却不料出现Network timed out while trying to connect to…如下:
解决方式:通过Google从docker-machine restart default这条命令得到提示,如果直接执行该命令报错不成功,手动exit docker之后,重新start,再docker run hello-world,问题解决!
webserver nginx
运行一个docker化的webserver,输入:docker run -d -p 80:80 –name webserver nginx,如下:
继续执行:docker ps,可以看到各个容器的详情,不过目前只有一个nginx,如下:
可以看到nginx的IP和端口是:0.0.0.0:80,浏览器访问localhost(或者docker/),就会看到如下页面:
Hyper-V管理器
windows自带有Hyper-V管理器,进入「开始菜单-windows管理工具」,可以看到新建的 Hyper-V管理器,打开之后可以看到WIN-4FQM25FK460虚拟机,以及虚拟机中正在运行的MobyLinuxVM实例,如下:
参考资料
Windows安装官方文档
关于「Unable to write to the database. Exit 1」错误
-EOF-