Windows10安裝Docker的一點思考

最近同事在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.docker.com/win/stable/Docker%20Desktop%20Installer.exe

二、以下僅介紹使用DockerToolbox在windows10上運行docker
1、Docker Toolbox下載鏈接:https://dn-dao-github-mirror.daocloud.io/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.org/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
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 [email protected])配置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以及一次性設置)時使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章