分享

Windows10安装Docker的一点思考

 廖知 2020-04-15

最近同事在windows7/10上使用docker遇到了些问题来咨询我,在尝试帮他解决后,自己也思考总结了下,现以博客的形式分享出来。
环境说明:windows10专业版 64位
一、Docker在Windows10上有两种部署方式
1、安装DockerToolbox,该方法是利用VirtualBox创建了一个名为default的linux虚拟机,再在该linux虚拟机上来运行docker。
2、利用Windows的Hyper-v虚拟化技术,直接在Windows上安装docker(先开启Hyper-v,但Hyper-v与vmware workstation不兼容,后期想运行vmware workstation时还需要禁用Hyper-v,所以暂不推荐该方法)。需要尝试的童鞋下载链接(https://download./win/stable/Docker%20Desktop%20Installer.exe

二、以下仅介绍使用DockerToolbox在windows10上运行docker
1、Docker Toolbox下载链接:https://dn-dao-github-mirror./docker/toolbox/releases/download/v1.12.3/DockerToolbox-1.12.3.exe
DokcerToolbox默认集成的VirtualBox版本可能无法正常使用,所以可先安装最新版本的VirtualBox,再安装DockerToolbox时就可以取消勾选VirtaulBox了,如图1.1所示。
Windows10安装Docker的一点思考
图1.1
备注:若无法使用默认VirtualBox,则下载最新的VirtualBox(下载链接为: https://download./virtualbox/6.0.14/VirtualBox-6.0.14-133895-Win.exe),按默认设置完成安装
2、完成DockerToolbox安装后,双击桌面图标,如图2.1,运行Docker Quickstart Terminal,会提示C:\Users\${user}.docker\machine\cache\boot2docker.iso 版本太低,如图2.2所示,要重新从github上(https://github.com/boot2docker/boot2docker/releases/download/v19.03.5/boot2docker.iso)下载,建议直接复制终端的下载地址使用迅雷下载
Windows10安装Docker的一点思考
图2.1
Windows10安装Docker的一点思考
图2.2
另外要注意的事,VirtaulBox默认创建的default虚拟机以及虚拟磁盘是放在C:\Users\${user}.docker\machine\machines\default。镜像和容器多了之后,会导致C盘空间不够用,所以可将虚拟机目录指到其他盘符,只需要增加环境变量MACHINE_STORAGE_PATH,如图2.3所示。
Windows10安装Docker的一点思考
图2.3
关闭上述图2.2终端窗口,待下载完成后,直接复制替换D:\virtual-box\cache\boot2docker.iso,然后再运行桌面Docker Quickstart Terminal图标,如图2.4所示。
Windows10安装Docker的一点思考
图2.4
注:我这里IP变成99.102了,原因是我在删除default虚拟机时,VirtualBox的DHCP服务仍然在后台运行,因租约时间没到所以新分配了一个IP地址,如果想仍然获得99.100的IP,可以在任务管理器停止VirtualBox的DHCP服务(同时清理C:\Users\tgh.VirtualBox下名称带DHCP的文件)
3、创建容器进行测试,如图2.5、图2.6、图2.7所示。

$ docker pull centos
$ docker run -idt --name web01 -p 8088:80 --privileged=true centos:latest /sbin/init
$ docker exec -it web01 /bin/bash
[root@b95faf1d7801 /]# yum -y install httpd
[root@fe83f8d07d98 /]# systemctl enable httpd
[root@fe83f8d07d98 /]# systemctl start httpd
[root@fe83f8d07d98 /]# echo "hello world" >> /var/www/html/index.html

Windows10安装Docker的一点思考
图2.5
Windows10安装Docker的一点思考
图2.6
Windows10安装Docker的一点思考
图2.7
三、总结
1、windows上安装virtaul box后默认会运行一个虚拟机(通过boot2docker.iso引导,相当于livecd),挂载一块虚拟磁盘(/dev/sda)持久化存储docker容器及镜像,该虚拟机网段是192.168.99.0/24(config.json可改),若是第一次安装,默认IP是192.168.99.100,登录用户名/密码是docker/tcuser,该虚拟机有2个用途:
(1)、所有容器运行于该虚拟机之上。
(2)、iptables做DNAT发布应用端口。

2、在使用过程中遇到的一些问题说明:
(1)、该虚拟机每次重启会清理掉iptables配置,docker和root用户密码也会恢复成默认。所以每次关闭自己电脑时,建议在virtual box中将该虚拟机暂停(挂起),第二天要用时先在VirtualBox运行该虚拟机。
(2)、windows上默认端口映射是用default虚拟机(ssh docker@192.168.99.100)配置iptables做DNAT发布端口。容器创建后,如果有新增服务,需要再次映射端口,可直接登录到default虚拟机增加映射记录,例如执行如下命令发布8089端口:
root@default:~# iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8089 -j DNAT --to-destination 172.17.0.2:80
若要删除映射,可执行以下命令
root@default:~# iptables -t nat -L -n --line-numbers #列出所有nat规则
root@default:~# iptables -t nat -D DOCKER 8 #按编号删除规则,此处是删除编号是8的规则
推荐使用以下方法修改映射(该方法同样适合于Ubuntu/Centos宿主机)
i)、iptables-save > iptbles
2)、修改iptables里面内容,删除或添加规则
3)、iptables-restore iptables
注:以上操作在default虚拟机中是以root用户执行。
3、使用Kitematic管理容器遇到的问题
(1)、在Kitematic管理菜单项中,每点一次save (保存)操作都会删除原容器重新创建新容器,在原容器所安装的软件以及配置都不会在新容器中得到继承。例如使用Kitematic来发布端口,若是已经在使用的容器,此时想用Kitematic来发布新端口会导致容器内数据全部丢失,包括安装的软件环境!是我操作姿势不对?,个人觉得该工具仅适合在首次创建容器(方便搜索docker Hub上的image以及一次性设置)时使用。

4、问题延伸
若事先未设置环境变量MACHINE_STORAGE_PATH,则默认创建的default虚拟机以及虚拟磁盘是放在C:\Users\${user}.docker\machine\machines\default。容器以及镜像多了之后,虚拟磁盘空间不够,同时也会导致C盘空间不够用,需要迁移到其他盘,迁移步骤如下:
(1)、打开VirtualBox,在"default"虚拟机上使用"右键",选择“退出”-->"正常关机",关闭default虚拟机。
(2)、移动目录C:\Users\tgh\.docker\machine\machines\default为C:\Users\tgh\.docker\machine\machines\default-backup
(3)、删除default容器,并且选择“删除所有文件”,如下图4.1所示。
Windows10安装Docker的一点思考
图4.1
(4)、关闭VirtualBox,设定环境变量:MACHINE_STORAGE_PATH,如图4.2所示。
Windows10安装Docker的一点思考
图4.2
(5)、修改VirtualBox的“全局设定”,指定虚拟机目录为E:\virtual-box\machine\machines,如图4.3所示。
Windows10安装Docker的一点思考
图4.3
(6)、新建default虚拟机,并设置好存放路径、类型、版本,然后点击“下一步”,如图4.4所示。
Windows10安装Docker的一点思考
图4.4
此处选择“不添加虚拟硬盘”,因为后面我们要加回备份的虚拟硬盘,如图4.5所示,点击“创建”。
Windows10安装Docker的一点思考
图4.5
(7)、在default虚拟机上右键选择“设置”,调整网络,网卡1按默认NAT设置,网卡2配置为“仅主机(Host-only)网络”,点击"OK",如图4.6所示。
Windows10安装Docker的一点思考
图4.6
完成上述设置后,我们进到虚拟机的创建目录,发现只有2个文件,如图4.7所示。
Windows10安装Docker的一点思考
图4.7
(8)、观察原来备份的目录结构,发现带vbox的2个文件是在default\default下,如图4.8所示。
Windows10安装Docker的一点思考
图4.8
那我们先要将default-backup下除default目录外所有文件拷贝到E:\virtual-box\machine\machines\default,如图4.9所示。
Windows10安装Docker的一点思考
图4.9
再将E:\virtual-box\machine\machines\default下创建一个default目录,将.vobx移到defaut目录下,如图4.10所示
Windows10安装Docker的一点思考
图4.10
(9)、default虚拟机的.vbox文件位置已经移动了,此时我们必须在VirtualBox界面将default虚拟机移除(只是移除),如图4.11所示,待配置文件都修改正确后再在后面重新添加。
Windows10安装Docker的一点思考
图4.11
(10)、修改E:\virtual-box\machine\machines\default\config.json,将路径“C:\Users\tgh\.docker”替换为新路径“E:\virtual-box”,如图4.12所示。
Windows10安装Docker的一点思考
图4.12
(11)、完成上述设置后,进到“虚拟介质管理”,在“虚拟硬盘”点击“注册”,将E:\virtual-box\machine\machines\default\disk.vmdk注册进来,同理,在“虚拟光驱”将E:\virtual-box\machine\machines\default\boot2docker.iso注册进来,如图4.13所示。
Windows10安装Docker的一点思考
图4.13
(12)、设置default虚拟机磁盘。开始已经在VirtualBox中移除了default虚拟机,现在要从新的位置添加回来,进到E:\virtual-box\machine\machines\default\default\目录下,双击default.vbox即可添加到VirtualBox,然后在default虚拟机上右键“设置”,选中“存储”,将引导镜像和虚拟磁盘添加进来,如图4.14所示。
Windows10安装Docker的一点思考
图4.14
(13)、最后,双击桌面“Docker Quickstart Terminal”图标,顺利的话就完成了迁移了,但有可能会遇到default虚拟机秘钥因新建发生了变化导致连接失败(Linux运维人员看到该错误肯定非常熟悉),如图4.15所示,因为本地主机在第一次接default虚拟机时就会在C:\Users\${user}\.ssh\known_hosts保存default虚拟机的公钥,只要删除本地known_hosts中对应IP(如99.100)记录即可。
Windows10安装Docker的一点思考
图4.15

写在最后:上述迁移步骤粗暴且繁琐,想想我们真的需要这样去做迁移吗?若直接导出再导入虚拟机不更简单么?另外,为什么要装"DockerToolBox“,然后用“Docker Quickstart Terminal”来玩Docker?我直接VirtualBox装个ubuntu/CentOs虚拟机再在上面玩Docker不更好么!哈哈,熟能生巧。如果是爱折腾童鞋可以尝试一下上述步骤,肯定是有收获的。   

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多