文章出處

前言

Windows Server 2016正式版發布已經有近半年時間了,除了看到攜程的同學分享了一些Windows Server Docker的實踐經驗,網上比較深入的資料,不管是中文或英文的,都還不太多。工作中對Windows Server 2016下的Docker,也評估了一段時間了,特此做一些分享,幫助大家填坑。本系列的討論主要關注Windows Server 2016下的原生Docker容器,不涉及Hyper-V模式的容器。

準備

既然是Windows Server 2016下的Docker,首先我們要安裝Windows Server 2016環境。條件允許的話,還是推薦使用物理機,因為實際使用中,直接在物理機操作,一方面響應更快,也能減少不必要的虛擬機軟件本身的兼容性問題。如果,條件實在不允許,想要使用虛擬機的話,建議使用VMWARE系列。最新的VMWARE vSphere 6.5+, Fusion 8.5+和Workstation 12.5+下親測都沒問題,分配4G以上內存即可,整體系統響應還能接受。建議別在Hyper-V下安裝,不然真會慢到懷疑人生的。

如果想使用Vagrant安裝,可以使用jacqinthebox/windowsserver2016stefanscherer/windows_2016_docker這兩個box。不過,vagrant box國內網絡下載速度超慢,反而微軟官網的下載速度還行,所以其實自己下載試用版的Windows Server 2016的ISO安裝也花不了多少時間。

那么,假設你已經有了一個全新安裝的Windows Server 2016帶GUI的系統,并且已經安裝了全部更新補丁,下面就正式開始我們的Windows Server Docker之旅。

安裝Docker服務

安裝docker服務一般都會參考微軟官方的quickstart windows server文檔,按照它的步驟安裝行不行?行。但是,有一些細節,它分散到別的幾個頁面了,如果你沒有都仔細讀一下,并親自體驗一下相關功能的話,很可能會遇到一些坑。所以,建議按照下面的步驟:

  1. 安裝OneGet的docker provider,問你Yes/No,自然選Y:

    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
  2. 安裝docker包,問你All/Yes/No,選A:

    Install-Package -Name docker -ProviderName DockerMsftProvider
  3. 重啟機器
    安裝完docker包后,如果你立刻嘗試在命令行執行任何docker命令,比如:docker images,會報無法連接服務器錯誤,原因是,必須重啟一下機器。
  4. 重啟完機器回來,我們應該已經可以執行比如docker images這樣的命令了,不過,有可能你打開一個cmd或者powershell窗口,執行docker images會收到下面的錯誤,不用慌,那是因為你沒有以Adnimistrator模式打開cmd或powershell窗口:

    ...省略... //./pipe/docker_engine: Access is denied ...省略...
  5. 以administrator模式打開powershell窗口,執行docker images,是不是成功了?小興奮 :)
  6. 下面你想試試pull一個image或者運行一個未曾下載過的image?如果在墻外,應該沒問題。絕大多數情況下,在墻內的同學會遇到無法連接docker的服務器錯誤。什么?有人問什么是“墻”?那個——請自行google一下百度。言歸正傳,訪問不了墻外的,我們就需要訪問墻內的鏡像,阿里云開發者平臺DaoCloud都提供了免費的docker鏡像服務,需要先免費注冊一下。
  7. 假設你已經注冊了阿里云開發賬號或者daocloud賬號,拿到比如阿里云的類似https://xxxxxxxx.mirror.aliyuncs.com的地址,我們需要將鏡像地址配置到docker服務。請從文件瀏覽器中打開C:\ProgramData\docker\config目錄。注意C:\ProgramData\是一個默認隱藏的目錄,直接從C盤瀏覽是看不到,需要自己地址欄打一下。接下來,我們需要在config目錄下新建一個名叫daemon.json的文本文件,包含下面的內容(別忘了將鏡像地址替換成你自己的,不然后面報地址不能解析別怪我啊):

    {
    "registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]
    }
  8. 然后重啟docker的windows服務,通過GUI重啟,或者,在administrator模式的powershell窗口中執行都可以:

    Restart-Service docker -f
  9. 好了,現在我們可以試著pull或者運行一個docker image了,比如:

    docker run microsoft/dotnet-samples:dotnetapp-nanoserver
  10. 應該可以看到,image成功下載、運行,屏幕打印出下面這個小人:

如果沒看到,一定不是我的錯啦,肯定是你上面的步驟沒看仔細,不如再重新看一遍! 8-)

第一篇就到這里,自己試試其他docker命令吧!

下一篇,2 docker化現有iis應用的正確姿勢


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()