windows container (docker) 容器資料筆記

背景html

業務需求:簡化公司私有云,公有云的部署,嘗試尋找更好的,更優化的技術方案替換現有的虛擬機部署方案。java

技術背景: .netlinux

 

Docker 學習資料git

Docker中文社區: http://www.docker.org.cngithub

微軟docker文章:http://ruby-china.org/topics/27156docker

微軟docker官方文檔: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemonshell

Windows container部署還要學習下powershell (百度下學習資料)ubuntu

 

Windows container Docker 案例segmentfault

攜程.net 容器案例: http://www.javashuo.com/article/p-shxflbts-hn.htmlwindows

(.net 案例真的不多不多)

 

攜程案例:http://geek.csdn.net/news/detail/64295

Docker 應用案例: http://www.docker.org.cn/docker/122.html

除了以上的案例外,天然還有很是多案例,可是基本都是java的!

 

Docker 經常使用命令

參考資料:http://blog.csdn.net/zhang__jiayu/article/details/42611469

(可百度搜索更多)

容器生命週期管理 — docker [run|start|stop|restart|kill|rm|pause|unpause]

容器操做運維 — docker [ps|inspect|top|attach|events|logs|wait|export|port]

容器rootfs命令 — docker [commit|cp|diff]

鏡像倉庫 — docker [login|pull|push|search]

本地鏡像管理 — docker [images|rmi|tag|build|history|save|import]

其餘命令 — docker [info|version]

 

Windows container (Docker) 安裝

參考文章: http://www.bubuko.com/infodetail-1765950.html

微軟文章: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/configure-docker-daemon

 

一、安裝Container Feature,容器功能角色

可使用UI,固然也能夠用PowerShell:

Install-WindowsFeature containers

Restart-Computer -Force

因爲容器自己能夠跑在物理機或者虛擬機中,能夠順便把Hyper-V也裝了。

二、安裝Docker

能夠很炫的用PowerShell來拉取Docker引擎:

Invoke-WebRequest "https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip" -OutFile "$env:TEMP\docker-1.12.1.zip" –UseBasicParsing

默認解壓到C:\Program Files\Docker

Expand-Archive -Path "$env:TEMP\docker-1.12.1.zip" -DestinationPath $env:ProgramFiles

固然,你手動用瀏覽器什麼的https://get.docker.com/builds/Windows/x86_64/docker-1.12.1.zip 下載了本身解壓也是沒問題的。

而後要配置路徑的環境變量:

若是是臨時測試,能夠用:

$env:path += ";c:\program files\docker"

立刻就能夠繼續後續的PowerShell命令。

若是之後還要用,那就:

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Docker", [EnvironmentVariableTarget]::Machine)

從新打開PowerShell。

固然,也能夠用傳統的CMD Set Path=。。。。來配置。

接下來就要註冊Docker Deamon服務了,而後啓動docker服務。

dockerd --register-service

Start-Service docker

 

Windows container Docker 鏡像安裝

 

.net(或者說windows) 下面可選擇的基礎鏡像容器操做系統: windows server core 和 nanoserver

Linux等其餘平臺的鏡像比較多

參考: https://hub.docker.com/explore/

 

而Windows 鏡像其實很少

參考:https://hub.docker.com/r/microsoft/

阿里雲的鏡像服務(國內下載快一些):https://dev.aliyun.com/

 

來源網上的文章描述:

不少朋友都問過這個問題:我是否是能夠在Windows容器服務中運行Linux應用,或者反過來。Docker很厲害,但還木有辣麼厲害。你沒法在Windows上直接運行Linux進程,一樣你也沒法在Windows Container中運行Linux進程。這個狀況對於以上提到的2中運行時都適用,不管哪一種運行時模型,底層操做系統都是Windows,因此你沒法運行Linux進程。

這一樣意味着,當前Docker Hub上面的大量鏡像沒法在Windows Container 中使用。微軟已經開始在Docker Hub上提供Windows容器鏡像,你可使用一樣的docker pull命令或者去這些鏡像。好比:microsoft/windowservercore 鏡像是一個完整的服務器鏡像(大概3G大小),在這個鏡像中你可使用標準的msi安裝包,經過Dockerfile來構建你本身鏡像,能夠安裝和運行完整的.net framework和其餘的Windows應用程序。microsoft/nanoserver 鏡像則是一個精簡版的操做系統鏡像(大概300M),不提供msi支持,只能運行.net core應用,同時須要使用powershell進行管理。

 

Windows container Docker 鏡像製做

Windows 鏡像其實很少,這些能夠用來作基礎的鏡像

參考:https://hub.docker.com/r/microsoft/

阿里雲的鏡像服務:https://dev.aliyun.com/

 

Dockfile 鏡像製做(建議百度獲取更多)

http://www.jb51.net/article/105333.htm

https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/manage-docker/manage-windows-dockerfile

 

微軟製做的一些鏡像的腳本

https://github.com/Microsoft/Virtualization-Documentation

 

網上參考的鏡像製做的文章

Node.js鏡像 http://chuansong.me/n/509677751556

DoNet Core 鏡像 http://www.cnblogs.com/ylsforever/p/5736227.html

 

Docker 私有倉庫建設

微軟的倉庫或者阿里雲的倉庫下載docker速度依然是慢,慢,慢。必需要自建倉庫!

貌似網上沒有windows 的docker搭建私有倉庫的例子!貌似有ubuntu, 具體百度吧!

 

Docker 編排

參考文章:http://www.alauda.cn/2015/09/14/containers-docker-windows-and-trends/

容器編排比較: http://www.infoq.com/cn/news/2017/02/compare-container-orchestration

容器編排比較2:http://www.d1net.com/cloud/news/382913.html

攜程.net 容器案例: http://www.javashuo.com/article/p-shxflbts-hn.html

 

攜程的案例:Mesos和Kubernetes (彷佛涉及代碼的改造)

Swarm聽說支持windows docker。

微軟官方貌似沒有 windows container 容器編排的工具支持。

 

總結

整體windows container的技術發展尚處於前期,不少的資料和工具尚且沒有配套的解決方案(總體部署顛覆原有windows的部署方式,須要採用powershell工具),沒有成熟的企業商用案例分享,甚至windows server core和nanoserver 的基礎鏡像都要下載個大半天(鏡像生態彷佛只有微軟的貢獻,沒有第三方提交),甚至常常斷線(國內也沒有私有鏡像服務)。

Nanoserver 基礎鏡像 比較適合.net core的方式部署。(大約200-300M)

Windowservercore 基礎鏡像 比較適合 windows 舊的應用程序。(大約2-4G)

 

相反linux docker容器發展相對成熟不少,具體應用案例證實這些(百度下一些大公司的分享),上手更加容易(自己linux 經常使用shell腳本部署的),圍繞linux的容器生態(編排工具,解決方案等),更貼合做爲linux開發運維的部署的簡化和完善補充。

 

雖然windows container 目前還不成熟,可是相信windows container的會繼續發展,咱們依舊要持續保持關注,以便將來可以真正落地,應用到公司的項目中簡化運維部署。


另外: 目前本人windows 上面也沒有成功運行過docker,由於微軟鏡像下載真的很慢很慢,並且很不穩定。(也許是公司網絡緣由)

          歡迎有windows docker 經驗的人員留言交流,tks!!!

相關文章
相關標籤/搜索