Windows利用Swarm原生Docker叢集踩坑總結

來源:互聯網
上載者:User

標籤:windows docker swarmkit

環境:

角色 機器名稱 作業系統 IP 備忘
Mater Web30 Windows Server 2016 GUI 192.168.2.30 安裝最新推薦補丁
Node Web31 Windows Server 2016 Core 192.168.2.31 安裝最新推薦補丁
Node Web32 Windows Server 2016 Core 192.168.2.32 安裝最新推薦補丁


第一坑:Windows Server 2016 Core

1.作業系統分區坑

   由於我們使用的Windows鏡像都是基於microsoft/windowsservercore大小都在10G左右,還需要安裝IIS、aspnet等等,另外如果涉及到鏡像匯出也會佔用C盤空間,如果是做Docker的話建議C盤空間不小於60G,或者乾脆只分C盤。

  踩坑解決辦法:在硬碟還有大量富餘空間的情況下,可採用掛載檔案夾的形式,掛載C:\ProgramData\docker\windowsfilter檔案夾

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M01/9B/30/wKioL1lfLpmzYXVfAAIbUUyH2k8544.jpg" title="1.jpg" alt="wKioL1lfLpmzYXVfAAIbUUyH2k8544.jpg" />


2.命令列如何設定機器IP及機器名稱及開啟遠端桌面

在CMD命令提示字元下執行sconfig即可,建議開啟遠端桌面方面命令輸入

650) this.width=650;" src="https://s4.51cto.com/wyfs02/M02/9B/30/wKiom1lfLqfAxUXTAACuVt1f56k440.jpg" title="2.jpg" alt="wKiom1lfLqfAxUXTAACuVt1f56k440.jpg" /> 

3.安裝Docker之前一定需要安裝最新的Windows補丁

方法:sconfig--->6)下載並安裝更新--->R)僅搜尋推薦的更新---->A)安裝所有


4.檔案如何複製到Windows Server Core下,在命令列下

開啟可寫共用

cd \

mkdir share

net share share=c:\share /grant:everyone,full

串連共用

net use z: \\192.168.2.30\share password /user:administrator

於是就映射共用到Z盤,進入Z盤即可操作檔案

刪除共用

net share c:\share /del /y


5.在Windows命令列如何查看檔案

type filename.txt

追加檔案

echo 127.0.0.1 web30 >>\windows\system32\drivers\etc\hosts


6.查看Windows進程

tasklist


7.殺死進程

tskill


第二坑:Windows 2016原生Docker

1.Windows安裝Docker

在命令提示字元出入powershell,

Install-Module -Name DockerMsftProvider -Repository PSGallery -ForceInstall-Package -Name docker -ProviderName DockerMsftProvider

如果第二部提示未安裝補丁,則需要安裝最新Windows補丁,輸入sconfig第6步

安裝完成之後重啟伺服器


2.配置所有伺服器的防火牆規則

TCP 通訊埠 2377 用於群集管理通訊

TCP 和 UDP 連接埠 7946 用於節點間通訊

TCP 和 UDP 連接埠 4789 用於覆蓋網路通訊

netsh advfirewall firewall add rule name="swm 2377" dir=in action=allow protocol=TCP localport=2377 netsh advfirewall firewall add rule name="swm 7946" dir=in action=allow protocol=TCP localport=7946netsh advfirewall firewall add rule name="swm 7946udp" dir=in action=allow protocol=UDP localport=7946netsh advfirewall firewall add rule name="swm 4789" dir=in action=allow protocol=TCP localport=4789netsh advfirewall firewall add rule name="swm 4789udp" dir=in action=allow protocol=UDP localport=4789


3.初始化群集模式

在Master上執行

C:\> docker swarm init --advertise-addr=192.168.2.30 --listen-addr 192.168.2.30:2377

坑:在Linux上執行docker swarm init即可初始化叢集,但是在Windows上會卡住不動,在windows上需要指定IP及連接埠


4.加入叢集(在Web31和Web32執行)

在上面提示輸入

docker swarm join     --token SWMTKN-1-1lbjx00s1qsjbjfuoq92f6d95mf41arbhwbkkigmo1smjqs38r-8i0bdakwhc3lvbbog8fnmvgmw     192.168.2.30:2377

即可加入叢集,注意此處需要修改為一行

docker swarm join --token SWMTKN-1-1lbjx00s1qsjbjfuoq92f6d95mf41arbhwbkkigmo1smjqs38r-8i0bdakwhc3lvbbog8fnmvgmw 192.168.2.30:2377

坑1:加入叢集命令只可以用一行,不可以使用\來進行換行

坑2:一定要在防火牆開啟相應的規則,開啟2377/TCP、7946/TCP、7946/UDP、4789/TCP、4789/UDP連接埠

坑3:目前測試Linux可以加入Windows Swarm叢集,Windows也可以加入Linux Swarm叢集,但是目前無法管理叢集


5.服務連接埠映射問題

在Linux環境下我們可以通過

docker service create -name web -p 80:80 nginx

在執行之後各個節點都可以通過80連接埠進行服務,但是在Windows是不行的

docker service create -name iis -p 80:80 microsoft/iis執行之後是無法通過80連接埠訪問

目前是通過

docker service create -name iis -p mode=host,target=80,publish=80 microsoft/iis

然後通過docker service ps iis

C:\Users\Administrator>docker service ps iisID            NAME   IMAGE                 NODE   DESIRED STATE  CURRENT STATE        ERROR  PORTSe118tf9vu15l  iis.2  microsoft/iis:latest  Web32  Running        Running 2 hours ago         *:8090->80/tcp

 可以看到容器在Web32上,這個時候訪問192.168.2.32:8090即可正常訪問,但是訪問主機的8090連接埠是無法使用的


6.Docker私人倉庫配置

配置私人倉庫

方法1:更改註冊表[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Docker]

修改為C:\Program Files\Docker\dockerd.exe --run-service --insecure-registry "192.168.2.234:5000"

方法2:修改Docker設定檔,建議修改設定檔

C:\ProgramData\docker\config\daemon.json

{

  "insecure-registries" : ["192.168.2.234:5000"]

}

如果沒有該檔案可以建立以ASSIC形式





本文出自 “楓林晚” 部落格,請務必保留此出處http://fengwan.blog.51cto.com/508652/1945304

Windows利用Swarm原生Docker叢集踩坑總結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.