1.docker的安裝css
Docker for Windows是一個Docker Community Edition(CE)應用程序。Docker for Windows安裝包包含了在Windows系統上運行Docker所需的一切。若是你不想裝虛擬機,想直接在你的Windows操做系統中安裝與學習使用docker,那麼你首先得查看你的系統是否知足Docker for Windows的安裝與使用要求。html
Docker for Windows的當前版本運行在64位Windows 10 Pro,專業版、企業版和教育版(1607年記念更新,版本14393或更高版本)上。Ps:家庭版是不行的,若是你是家庭版,那麼一是升級到專業版,破解專業版推薦個地址:http://blog.csdn.net/SONGCHUNHONG/article/details/78006389 ,二是安裝Docker Toolbox,自行網上百度http://blog.csdn.net/tina_ttl/article/details/51372604前端
若是你知足Docker for Windows的環境條件了,那麼首先檢查電腦的虛擬化開啓了沒有:進入任務管理器(ctrl+alt+delete),點擊性能->cpu ,查看虛擬化是否已啓用,若是虛擬化是已禁用,那麼你須要重啓電腦進入bios開啓虛擬化(咱們的發的筆記本cpu都是支持虛擬化的,重啓時進入bios按esc -> 再按f12 -> 去開啓虛擬化)node
開啓虛擬化重啓後,進入任務管理器看虛擬化是否已啓用。 python
而後再是進入電腦的控制面板->程序->啓用或關閉Windows功能->把Hyper-v勾上,啓用後電腦會重啓,後面就能夠下載並安裝Docker for Windows了。 ios
進入網址https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows 下載並安裝。我安裝的是穩定版。安裝過程沒什麼要注意的。 nginx
啓動之後會出如今桌面的右下角區域,鼠標放上去之後顯示Docker is running表示啓動成功,第一次安裝啓用好像是會彈出個Docker Cloud登陸界面,去註冊而後登陸,使用和git有點相似,能夠pull圖像等等 git
檢查Docker,Compose和Machine的版本 web
檢查版本信息,並確保docker命令正常工做
redis
運行docker run hello-world以測試從Docker Hub中拉取圖像並啓動容器
使用命令docker run -it ubuntu bash運行一個Ubuntu容器,我以前已經拉取過這個容器了,大概是幾十兆吧,因此直接啓用了,輸入exit命令中止容器
運行命令docker run -d -p 80:80 –name webserver nginx 啓動一個Dockerized webserver 會下載nginx容器圖像並啓動它,而後再打開瀏覽器鍵入http://localhost
運行docker ps 命令,檢查容器的詳細信息
中止或移除容器和圖像。若是你想中止網絡服務器,輸入:docker stop webserver而後從新啓動docker start webserver。要使用單個命令中止並刪除正在運行的容器,請鍵入: docker rm -f webserver。這將刪除容器,但不是 nginx圖像。您能夠列出本地圖像docker images。你可能想要保留一些圖片,這樣你就沒必要再從Docker Hub中取出它們了。要刪除再也不須要的圖像,請使用docker rmi後跟圖像ID或圖像名稱。例如docker rmi nginx
Set-ExecutionPolicy RemoteSigned
get-executionpolicy
Install-Module posh-docker
或者,要僅爲當前用戶安裝模塊,鍵入: Install-Module -Scope CurrentUser posh-docker
Import-Module posh-docker
這將建立一個$PROFILE
若是不存在,並將此行添加到文件中: Import-Module posh-docker
要檢查文件是否已正確建立,或只需手動編輯,請在PowerShell中鍵入如下內容: Notepad $PROFILE
打開一個新的PowerShell會話。如今,當你鍵入的前幾個字母后按Tab鍵,Docker命令(如開始,中止,運行及其選項)以及容器和映像名稱如今都應該自動完成。
找到右下角的docker圖標,右擊選擇settings進去
General:這裏是設置docker開機自啓,應用程序啓動時檢查更新,發佈使用狀況統計信息
Advanced:分配cpu數量與內存量
Daemon:Docker for windows10 能夠配置阿里雲鏡像,到https://cr.console.aliyun.com/ 註冊一個帳戶,登陸進去後再列表選擇加速器,把你的專屬加速器地址複製粘貼到Daemon的Registry mirrors中
在過去,若是你要開始編寫一個Python應用程序,你的第一步就是在你的機器上安裝一個Python運行庫。可是,這會形成您的機器上的環境必須知足必定條件以使您的應用程序能夠運行。
使用Docker,你能夠將一個可移植的Python運行庫做爲一個映像,不須要安裝。而後,您的構建能夠將基礎Python鏡像與應用程序代碼一塊兒包括在內,確保您的應用程序,依賴項和運行時都一塊兒運行。
這些可移植的鏡像是由一個叫作Dockerfile的東西來定義的
建立一個空目錄,我取名叫docker,而後分別在裏面新建三個文件:Dockerfile,app.py,requirements.txt
三個文件中的內容分別設計爲:
在docker目錄下打開cmd.exe運行命令(確保可以找到Dockerfile文件,鏡像取名叫friendlyhello): docker build -t friendlyhello .
ps:千萬不要落了上面那行後面的那個點,曾經入過坑的。。命令包括後面的那個點
而後再執行命令:
docker images
運行鏡像程序:
docker run -p 4000:80 friendlyhello
能夠看到Python正在爲應用程序提供消息的http://0.0.0.0:80。可是,這個消息來自容器內部,它不知道咱們將該容器的端口80映射到4000,從而打開URL: http://localhost:4000
首先在接着上面的操做步驟後按下ctrl+c在終端退出,這並不意味着鏡像中止運行了
鍵入docker container ls 列出正在運行的容器
運行命令: docker container stop <Container NAME or ID>
中止容器。不然,在下一步中從新運行容器時,將會收到錯誤響應。
前面已經說過了,docker和git的操做有相似之處,因此docker也
有遠程倉庫,若是前面已經註冊過並登陸了docker cloud,那麼
訪問網址:https://hub.docker.com 在裏面建立存儲庫,不然先
註冊吧。
前面在本地建立了一個friendlyhello的鏡像,如今要把它push到
本身的docker hub的存儲庫中去,首先:
1. 登陸docker hub (我已經登陸過了。。再登陸一次吧)
2. 標記鏡像:
把鏡像放入wangliguo存儲庫並標記爲test
3. 查看鏡像:
4. 發佈鏡像(推送鏡像)
5. Docker Hub上查看鏡像:
6. 從遠程存儲庫中提取並運行鏡像:如今當遠程存儲庫有了鏡像後,就能夠從遠程存儲庫提取並運行了
在分佈式應用程序中,應用程序的不一樣部分被稱爲「服務」。例如,想象一個視頻共享站點,它可能包括用於將應用程序數據存儲在數據庫中的服務,用於用戶上傳東西的視頻轉碼服務,爲前端服務等等。
服務實際上只是「生產中的容器」。服務只運行一個鏡像,但它編碼鏡像運行的方式 - 應該使用哪一個端口,容器應該運行多少個副本,以便服務具備所需的容量,以及等等。縮放服務會更改運行該軟件的容器實例的數量,從而爲流程中的服務分配更多的計算資源。
使用Docker平臺定義,運行和擴展服務很是簡單 - 只需編寫一個docker-compose.yml文件便可。
鍵入:
拉取的是上個步驟中的存儲庫的tag。
運行該鏡像的5個實例做爲一個服務調用web,限制每一個使用,最多10%的CPU(跨全部核心)和50MB的RAM。
若是一個失敗,當即從新啓動容器。
將主機上的端口80映射到web端口80。
指導web容器經過一個負載平衡的網絡共享80端口webnet。(在內部,容器自己將web在臨時端口上發佈到 端口80)。
webnet使用默認設置(這是一個負載平衡覆蓋網絡)定義網絡。
先運行命令:docker swarm init
而後再運行命令:docker stack deploy -c docker-compose.yml getstartedlab
給它取名叫getstartedlab
服務堆棧在這臺主機上運行了5個部署鏡像的容器實例
運行命令查看:docker service ls
在服務中運行的單個容器稱爲任務,能夠看到上面有個getstartedlab_web的服務
運行命令docker service ps getstartedlab_web 查看此服務下的任務:
若是隻列出系統中的全部容器,也會顯示任務,但不會被服務過濾:
運行命令:docker container ls -q
而後打開瀏覽器,鍵入http://localhost
點擊刷新屢次,能夠發現Hostname的更改,以循環方式選擇5個任務中的一個來響應。容器ID將與前一個命令(docker container ls -q)的輸出相匹配。
好比更改docker-compose.yml中的replicas值,保存更改並從新運行docker stack deploy命令來更新應用程序:
運行命令:
docker stack deploy -c docker-compose.yml getstartedlab
Docker會作一個就地更新,而後從新運行docker container ls -q以查看從新配置的已部署實例
能夠看到以前是6個,如今是7個,恰好多了一個任務
ps:電腦中還運行這以前步驟中從docker hub中拉取並運行着的那個任務,因此會看到6個和7個
關閉應用程序docker stack rm getstartedlab
關閉羣docker swarm leave –force
如今服務中的任務都關閉了之後再運行命令:
docker container ls -q
這就是上面說的那個以前步驟中從docker hub中拉取並運行着的那個任務
swarm是運行Docker並加入到一個集羣中的一組機器。可是如今它們將由羣集管理器在羣集上執行。羣體中的機器能夠是物理的或虛擬的。加入羣體後,他們被稱爲節點。
Swarm管理人員可使用多種策略來運行容器,好比「最空的節點」(emptiest node) - 它使用容器填充最少使用的機器。或「全局」,這確保了每臺機器只能獲得指定容器的一個實例。您能夠指示swarm manager在Compose文件中使用這些策略。
羣體管理者是羣體中惟一能夠執行你的命令的機器,或者受權其餘機器做爲工做者加入羣體。工人提供能力,並無權力告訴任何其餘機器能夠作什麼和不能夠作什麼。
到目前爲止,以前都是在本地機器上以單主機模式使用Docker。可是Docker也能夠切換到羣集模式,這就是使用羣集的緣由。啓用羣模式使當前機器成爲羣管理器。則Docker將運行您正在管理的羣集上執行的命令,而不只僅是在當前的機器上。
一個羣由多個節點組成,能夠是物理機或虛擬機。基本的概念很簡單:運行docker swarm init啓用羣模式,使當前的機器成爲羣管理器,而後docker swarm join在其餘機器上運行 ,讓它們做爲工人加入羣體。下面將使用虛擬機快速建立一個雙機羣集,並將其變成羣集。
步驟:
1. 以管理員運行cmd.exe 這裏必須是管理員運行,否則後續操做權限不夠
2. 運行docker swarm init啓用羣模式,使當前的機器成爲羣管理器,而後docker swarm join在其餘機器上運行 ,讓它們做爲工人加入羣體。
3. 啓動Hyper-V管理器
點擊開始windows管理工具Hyper-V管理器
4. 單擊右側菜單中的虛擬交換機管理器
5. 單擊建立類型爲外部網絡的虛擬交換機,給它的名稱myswitch,並檢查框共享您的主機的活動網絡適配器
6. 使用節點管理工具建立幾個虛擬機docker-machine:
docker-machine create -d hyperv –hyperv-virtual-switch 「myswitch」 myvm1
docker-machine create -d hyperv –hyperv-virtual-switch 「myswitch」 myvm2
以前我已經建立過了,因此我如今再新建兩個:myvm3 和 myvm4
docker-machine create -d hyperv –hyperv-virtual-switch 「myswitch」 myvm3
docker-machine create -d hyperv –hyperv-virtual-switch 「myswitch」 myvm4
7. 如今建立了兩個虛擬機,分別命名爲myvm3和myvm4。使用命令
docker-machine ls 列出機器並獲取其IP地址。
先使用命令docker-machine ssh myvm3
而後讓myvm3 成爲一個管理員:docker swarm init
注意紅框中的內容,這是後面的myvm4 加入集羣要執行的命令
運行命令:docker node ls
能夠看到myvm3 已經成爲管理員了
以管理員身份再運行一個cmd.exe.而後運行命令:docker-machine ssh myvm4
而後再運行命令:(這就是上一頁中圖片裏紅框中的內容,下面的token是我這裏的,正常運行到這裏的時候是去myvm3的docker swarm init命令中把紅框框位置裏的命令複製粘貼過來執行)
docker swarm join --token SWMTKN-1-0csyw4yz6uxob90h0b8ejoimimrgisiuy9t2ugm8c1mxfvxf99-7q7w5jw1mrjk1jlri2bcgqmu8 10.211.106.194:2377
而後再切換到myvm3 的cmd.exe中執行命令:docker node ls
能夠看到,咱們已經建立了一個簡單的集羣。、
附離開羣命令:docker swarm leave
docker-machine爲swarm管理器配置一個shell
運行命令:docker-machine env myvm3
注意最後一行的內容
我這裏是@FOR /f "tokens=*" %i IN ('docker-machine env myvm3') DO @%i
複製粘貼運行它
再運行docker-machine ls以驗證它myvm3 是否爲活動機器
在swarm管理器上部署應用程序
以部署咱們以前docker-compose.yml服務爲例
首先在這個以管理員身份打開的cmd中進入到docker-compose.yml文件的所在的目錄中去,個人由於在D/docker中,若是不過來,那麼執行命令:
docker stack deploy -c docker-compose.yml getstartedlab會出現:
進入目錄後執行上面那條命令:
再執行命令docker stack ps getstartedlab 查看服務詳情:
若是發現state存在shutdown的狀況(也有可能出現你的圖片上的實例數量大於你在服務文件中定義的數量的狀況,這都是我爬過的坑,如今我這裏定義的是6,圖片上也是6,),那應該是你在以前服務哪一章運行過命令:
docker stack deploy -c docker-compose.yml getstartedlab 而沒有把getstartedlab移除掉
這時應該執行命令:docker stack rm getstartedlab 把getstartedlab移除掉
Ps:我是d,c盤都執行了這個命令,由於以前運行docker stack deploy -c docker-compose.yml getstartedlab命令是在d盤的時候
而後從新運行:docker stack deploy -c docker-compose.yml getstartedlab 和
docker stack ps getstartedlab 就行了
瀏覽器訪問集羣的網址:
如圖紅框框所示,瀏覽器上訪問其中的任何一個,而後刷新,將看到6個可能的容器ID,它們都是隨機循環的,展現了負載平衡
https://docs.docker.com/
http://blog.csdn.net/tina_ttl/article/details/51372604
http://blog.csdn.net/u011686226/article/details/53906976
http://blog.csdn.net/heatdeath/article/details/70432417
http://blog.csdn.net/fromsilence520/article/details/73480219