有条件还是尽量升级到 Win10 去用 Docker for Windows
安装所需的环境
1、Win7 及以上版本,Win10 以上可以安装 Docker for Windows
2、MacType 和 VirtualBox 冲突,导致无法启动虚拟机
3、安装 VirtualBox 时选择 NDIS5 驱动器。根据官方的说法,从 Windows Vista 开始, VirtualBox 默认安装 NDIS6 驱动,但是可能会导致虚拟机从系统变慢到网络异常的一系列问题,所以如果不幸出现了问题,可以重装 Docker Toolbox,选择用 NDIS5 驱动安装 VirtualBox
点击查看官方说法
启动
点击 Docker Quickstart Terminal
有时点击可能无效,是因为之前有安装过 git 了,但是 git 的安装路径不对,点击
右键 - 属性 - 快捷方式
修改 bash 的路径即可
不出意外会需要更新 boot2docker.iso 文件,但是下载很慢,此时可以退出直接去 github
下载最新版的 boot2docker.iso 到 C:\Users\Administrator\.docker\machine\cache
路径下
重新点击,启动成功
此前电脑上装了 MacType,导致一直无法启动 VirtualBox 的虚拟机,这里再次提个醒。其实以前安装 Genymotion 的时候就遇到过 MacType 和 VirtualBox 冲突的情况,只是一直没有联系到一起
现在可以 Hello World 了
docker run hello-world
现在你有一个镜像 (image) 和一个容器(container)了
镜像和容器,可以用类和实例类比,镜像是模版,容器是实例
docker images // 查看所有镜像
docker container ls // 查看正在运行的容器,辛辛苦苦敲了这几个单词却没有显示容器怎么办?
docker container ls -a // 可以带上 -a 参数,列出所有的容器,此时可以看到刚才的 hello-world 容器了,因为它运行完就退出了
docker rm -f container CONTAINER ID // 删除容器
docker rmi IMAGE ID // 删除镜像
设置国内镜像源
如果尝试拉取一个比较大的镜像,比如nginx
,你会发现速度慢得让人怀疑人生,此时可以设置一下国内的镜像源,让下载速度起飞
docker-machine ssh default // 先进入虚拟机,default 是默认的虚拟机名称
sudo vi /var/lib/boot2docker/profile // 编辑这个文件,添加镜像源 --registry-mirror https://registry.docker-cn.com
sudo /etc/init.d/docker restart // 重启 docker 进程
exit // 退出虚拟机
docker info // 看一下镜像源是否设置成功(是否有刚刚设置的 --registry-mirror 这一行)
docker pull nginx // 现在可以愉快地拉取`nginx`镜像了
这里有个问题,对于虚拟机中的配置的修改,在重启虚拟机之后(比如关机再开机)配置又被重置了,导致每次开机都要重新配置一遍,比如上面的镜像源配置。Github 上也有不少这方面的 issue #1718 这个描述得比较清晰,暂时的解决方案也很简单,第一次启动后修改启动脚本
start.sh
注释掉yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
这一行即可
if [ "${VM_STATUS}" != "Running" ]; then
"${DOCKER_MACHINE}" start "${VM}"
# yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
fi
文件夹权限
Toolbox 默认只能访问 C:\Users
这个文件夹下的内容,映射到虚拟机上就是 /c/Users
注意:
c
是小写,Users
是大写开头
如果你的项目在这个目录内,在添加数据卷(Volume)挂载本机目录时,可以使用相对路径, 比如这样
...
redis:
...
volumes:
- ./data:/data
...
...
如果你本机的项目放在其他目录,或者需要进入到其他目录的权限,需要添加该目录到虚拟机的共享文件夹
- 打开 VirtualBox
- 选择虚拟机,点击设置,这里是 default
- 选择共享文件夹,添加目录,映射到虚拟机的对应路径(截图显示是映射到
/Dockerfile
文件夹)
- 重启虚拟机
docker-machine restart default
这样就可以愉快地写数据卷(Volume)了,比如这样:
...
redis:
...
volumes:
- /Dockerfile/data:/data #这里就只能使用绝对路径了
...
...
Docker 开机自启动
将 Docker Quickstart Terminal
快捷方式拖到开始菜单『启动』文件夹下即可,这样 Docker 每次开机都会自行启动,相应的为了能让容器也重新启动(因为关机等原因容器停止运行了,但是并未删除,只需重新启动即可),可以加一条重启的命令:
...
redis:
...
restart: always # 加一条重启的命令
volumes:
- /Dockerfile/data:/data
...
...
卸载 Toolbox
进入控制面板,先卸载 Toolbox,再卸载 VirtualBox,C:\Users\Administor\.docker
需要手动删除