當Windows Server 2016開始有支援Containers後,認為只要把Windows Server 2016內的Container服務啟動後,就可以立馬來使用Docker這項技術,殊不知這是錯誤的,因為,這樣做法只是讓Windows Server 2016有了Container功能,但是,要讓它可以用Docker,還必須額外安裝Docker
模組才可以有辦法開始使用Docker的技術,而在Windows Server 2016支援的Containers有分成Windows Server Containers和Hyper-V Containers,下面採用的是Windows Server Containers。
安裝Docker
建議在安裝Docker之前,要把Windows Server 2016所有更新檔都必須要更新,才不會有問題,然後,用Admin權限啟動PowerShell
,而第一個必須先安裝Docker-Microsoft PackageManagement
套件,有了這個套件,才能去安裝Docker的Package
安裝Docker-Microsoft PackageManagement
安裝Docker Package
都安裝完畢後,必須重新啟動電腦,讓Docker服務啟動,若是後續想要更新Docker,只要輸入更新指令就可以
以上三步驟就可以在Windows Server 2016用Docker功能,若不確定是否可以用,只要輸入docker info
能查看Docker相關訊息就沒問題了
安裝Docker-Compose
Docker-Compose是讓你可以快速佈署或是啟動Container的設定檔,如果是透過VS.Code
去編輯Docker-Compose的yml檔案,必須先在VS.Code內安裝相關Docker-Compose套件,才可以開始編輯,但按照先前作法,已經可以在Windows Server 2016使用Docker,不過,卻沒有Docker-Compose指令,因為,必須額外安裝Docker-Compose套件,才有辦法使用Docker-Compose指令,安裝套件位置[https://github.com/docker/compose/releases],下載的檔案名稱是會是這樣docker-compose-Windows-x86_64.exe
,也可以直接用PowserShell的指令安裝套件
不過,若公司防火牆關係無法安裝化,就是必須先把檔案下載下來,並且,透過上面指令取代掉原本URL位置改成docker-compose-Windows-x86_64.exe
檔案的路徑,就可以安裝了,或是更改檔名為docker-compose
後放自訂一個目錄中,只是必須設定系統的Path指定到這個目錄中
製作自己的Docekr Image
我們會從Docker Store下載自己所需要的image建立Container,不過,從Store下載來的image只是原始的Source,有時候並不能符合我們實際需求,所以,還會額外把設定加入進去,但是,若是每次從Image建立Container,都還要重複設定一次,也很費工。如果這時候想要每次都直接用自己加工過的image,而不是原始的Source,必須花一點小方法來製作屬於自己的image,在原本Docker指令中,是有支援Export功能,但是,在Windows Server 2016 Containers目前沒有辦法用這個指令。所以,我們必須利用Commit方式進行。
以SQL Server Container為例,我們可以先把Containers建立起來後,並放入自己系統的DB
這時候建立的DB Container就不會是原始的Source,且每次啟動DB Container也不想要再還原一次DB到新的Container,這時候要把這個Container變成自己的image,以後只要啟動自己的image就可以
第一就是要先停掉Container,這個Container已經加入自己的DB
停掉Container後,用Commit方式建立新的image,這步驟通常會一點點時間
如下圖,這樣在image List中,就多出剛剛建立的客製化image source了
如果想要把這image搬到其他地方使用呢?一種就是放入registry中,若現實不允許,就只能自己把image匯出檔案囉
通常這一步又要花費更久時間,反之要把檔案匯入,則使用docker load
,就可以建立一個自己情境的docker image
讓Remote Container執行Docker-Compose
上面執行Docker方式,都是在Windows Server中下達Docker指令,但是,如果要透過另一台VM或是機器去呼叫遠端的VM的Container,必須先做幾個設定,首先,要更改遠端機器的daemon.json
檔案,加入下面參數,並重啟Docker(Restart-Service docker)
須注意就是遠端機器的防火牆必須要開啟2375
Port,然後執行docker -H Remote IP:2375 info
,就可以確認是否有通了,到了這部表示遠端機器已經開放Port讓你可以遠距執行Docker指令,接下來就是執行.yml
檔案去建立Container,這次案例是建立好一個要啟動SQL Container,在yaml
的描述檔的內容如下:
通常要執行這個yaml
檔案會是放在要執行Container機器上,而這次是要透過自己電腦去啟動遠端的Container,所以,必須把yaml
檔案放在自己電腦端,然後透過下面指令執行它
就可以讓啟動遠端的Container了
參考來源
https://blog.yowko.com/2017/05/docker-command-in-windows.html
https://philipzheng.gitbooks.io/docker_practice/content/introduction/what.html