推薦一個國內的軟件下載平台(使用百度雲網盤下載):https://oomake.com/download/docker-windows
docker安裝需要window server 2016以上。
window 2005更新
http://blog.sina.com.cn/s/blog_a0c06a350102z0z7.html
直接windows update
docker安裝:首先開啟windows的hyper-v,然后直接點擊下載的應用程序,啟動時它會先檢查你的windows系統是否滿足條件,如果不滿足,他會退出安裝。如果滿足,他會開始安裝。【安裝時請退出360等軟件】,安裝過程中會多次重啟計算機。
安裝完成后可用git bsah執行:$ docker run hello-world
結果如下:

寫在前面的話:
實際上docker只能在linux系統下運行,Windows下運行必要要支持Hyper-v( 注:windows專業版本才有這個功能)。安裝docker的時候會自動創建一個虛擬的linux系統,后續的其他操作實際上是間接使用這個虛擬系統進行的。
docker是什么?
Docker 是一個開源的應用容器引擎,基於
Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
docker的應用場景:
- Web 應用的自動化打包和發布。
- 自動化測試和持續集成、發布。
- 在服務型環境中部署和調整數據庫或其他的后台應用。
- 從頭編譯或者擴展現有的OpenShift或Cloud Foundry平台來搭建自己的PaaS環境。
docker架構:
- docker是典型的c/s架構【類似於網易雲】,使用遠程API來管理和創建Docker容器。
- Docker容器通過Docker鏡像來創建
- 容器與鏡像的關系類似於面向對象中的對象與類。



daemon:守護進程
registries:注冊處

細細體味鏡像於容器之間的關系。
對docker有個了解之后,開始實踐了,實踐出真知:
對於最早在git bash里運行的$ docker run hello-world是什么意思?
-docker允許你在容器里運行應用程序,使用docker run命令來在容器內運行一個應用程序。
也就是說這個命令是運行一個應用程序,這個應用程序名叫hello-world。我們詳細看一個例子
例子:對下面這個命令進行解析:
docker run ubuntu:15.10 /bin/echo "Hello world" 【windos不可行】
各個參數解析:
- docker: Docker 的二進制執行文件。
- run:與前面的 docker 組合來運行一個容器。
- ubuntu:15.10指定要運行的鏡像,Docker首先從本地主機上查找鏡像是否存在,如果不存在,Docker 就會從鏡像倉庫 Docker Hub 下載公共鏡像。
- /bin/echo "Hello world": 在啟動的容器里執行的命令
以上命令完整的意思可以解釋為:Docker 以 ubuntu15.10 鏡像創建一個新容器,然后在容器里執行 bin/echo "Hello world",然后輸出結果。
類比於hello-world,在git bash中輸出也可以看到,docker首先從本地主機上查找hello-world鏡像是否存在,顯然是不存在的,docker從鏡像倉庫里下載了公共的hello-world鏡像,然后運行了這個鏡像,最后輸出結果為:Hello from Docker!
下面我們來學習一些命令:
- 查看本地有哪些鏡像:
docker images

可以看到我們最開始下載的hello-world
- 查看當前正在運行的容器
docker ps

由於hello-world已經運行結束,所以當前沒有可運行的容器了。docker ps -a查看所有運行的容器包括已經停止的。
- 查看某應用程序日志
我剛剛下載了最新的windows鏡像,並執行了PowerShell
即:PS C:\> docker run -it microsoft/windowsservercore powershell
docker幫我下載了最新的windows鏡像,下載完后執行了powershell命令幫我啟動了powershell命令行工具。我在它啟動的命令行工具里輸入:systeminfo 查看當前下載的windows鏡像的系統信息。輸出如下:

好了,現在我們來查看一下該應用程序(windows)輸出的日志信息:
首先我們看一下當前那些鏡像在運行:docker ps -a 查看所有容器

你可以看到之前的hello-world不過它的狀態是exited,還有一個就是剛才我下載的window鏡像。
- 查看某容器內部標准輸出:
docker logs [ID或名字] || docker logs -f [ID或名字]
-f表示 像使用 tail -f 一樣來輸出容器內部的標准輸出。
docker logs -f ce005d531a93

可以看到日志里輸出了容器內執行的情況,而且還有我輸入的systeminfo命令
- 查看某容器內的進程
docker top [ID或名稱]
如查看剛才windows容器里所有進程:docker top ce005d531a93

- 檢查某應用程序
使用 docker inspect 來查看 Docker 的底層信息。它會返回一個 JSON 文件記錄着 Docker 容器的配置和狀態信息
dockers inspect ce005d531a93

- 停止、重啟容器
-停止:docker stop [ID/NAME]
-重啟:docker start [ID/NAME]
- 移除容器 docker rm [ID/NAME]
刪除容器時,容器必須是停止狀態,否則會報如下錯誤:
runoob@runoob:~$ docker rm wizardly_chandrasekhar Error response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove
比如我們移除hello-world容器
docker rm 377e748bef63 將返回移除容器的id

- 下載最新的鏡像 docker pull [ID/NAME]
在執行該命令前,你首先要確保已經登陸你的docker hub賬號和密碼,你可以使用docker login命令在控制台進行登陸
當我們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像。如果我們想預先下載這個鏡像,我們可以使用 docker pull 命令來下載它。類不類似於git命令 git clone,又像maven把倉庫里的東西pull到本地。
- 查找鏡像 docker search httpd


-NAME:鏡像倉庫源的名稱
-DESCRIPTION:鏡像的描述
-OFFICIAL:是否docker官方發布
- 更新鏡像
更新鏡像之前,我們需要使用舊的鏡像來創建一個容器。
$ docker run -t -i ubuntu:15.10 /bin/bash 返回容器ID:e218edb10161
在運行的容器內使用 apt-get update 命令進行更新。相當於$ docker run -t -i ubuntu:15.10 /bin/bash apt-get update
在完成操作之后,輸入 exit命令來退出這個容器。
此時ID為e218edb10161的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。
$ docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2 f返回新鏡像的ID:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各個參數說明:
- -m:提交的描述信息
- -a:指定鏡像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要創建的目標鏡像名
我們可以使用 docker images 命令來查看我們的新鏡像 runoob/ubuntu:v2:
- 構建鏡像
比如說你新建了一個web工程,想以后不管在哪台機器上,只要這台機器運行了docker,就可以在這台機器上部署你的web工程,那么你首先要把你的web工程發布成鏡像然后push到你自己的遠程的鏡像倉庫,以后在其他地方用直接pull下來就可以用了。怎么構建鏡像?
更多 正在學習中....
http://prostatecancer.ai/studylist
推薦學習網站:

