分享

Docker Toolbox for Windows 之安装二三事

 筱肆 2020-03-17
0.2792018.01.17 16:22:35

有条件还是尽量升级到 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.isoC:\Users\Administrator\.docker\machine\cache路径下

重新点击,启动成功

此前电脑上装了 MacType,导致一直无法启动 VirtualBox 的虚拟机,这里再次提个醒。其实以前安装 Genymotion 的时候就遇到过 MacType 和 VirtualBox 冲突的情况,只是一直没有联系到一起

创建虚拟机 default
鲸鱼出现说明启动成功了!

现在可以 Hello World 了

docker run hello-world
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.
sudo vi /var/lib/boot2docker/profile
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
  ...
...

如果你本机的项目放在其他目录,或者需要进入到其他目录的权限,需要添加该目录到虚拟机的共享文件夹

  1. 打开 VirtualBox

  2. 选择虚拟机,点击设置,这里是 default

  3. 选择共享文件夹,添加目录,映射到虚拟机的对应路径(截图显示是映射到 /Dockerfile 文件夹)

    添加共享文件夹
  4. 重启虚拟机

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 需要手动删除

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多