本篇文章給大家?guī)砹岁P(guān)于怎樣在win10上安裝與使用docker的相關(guān)知識,希望對大家有幫助。
1.docker的安裝
環(huán)境準備
Docker for Windows是一個Docker Community Edition(CE)應(yīng)用程序。Docker for Windows安裝包包含了在Windows系統(tǒng)上運行Docker所需的一切。如果你不想裝虛擬機,想直接在你的Windows操作系統(tǒng)中安裝與學(xué)習(xí)使用docker,那么你首先得查看你的系統(tǒng)是否滿足Docker for Windows的安裝與使用要求。
-
Docker for Windows的當(dāng)前版本運行在64位Windows 10 Pro,專業(yè)版、企業(yè)版和教育版(1607年紀念更新,版本14393或更高版本)上。Ps:家庭版是不行的,如果你是家庭版,那么一是升級到專業(yè)版,破解專業(yè)版推薦個地址:http://blog.csdn.net/SONGCHUNHONG/article/details/78006389 ,二是安裝Docker Toolbox,自行網(wǎng)上百度http://blog.csdn.net/tina_ttl/article/details/51372604
-
如果你滿足Docker for Windows的環(huán)境條件了,那么首先檢查電腦的虛擬化開啟了沒有:進入任務(wù)管理器(ctrl+alt+delete),點擊性能->cpu ,查看虛擬化是否已啟用,如果虛擬化是已禁用,那么你需要重啟電腦進入bios開啟虛擬化(我們的發(fā)的筆記本cpu都是支持虛擬化的,重啟時進入bios按esc -> 再按f12 -> 去開啟虛擬化)
-
開啟虛擬化重啟后,進入任務(wù)管理器看虛擬化是否已啟用。
-
然后再是進入電腦的控制面板->程序->啟用或關(guān)閉Windows功能->把Hyper-v勾上,啟用后電腦會重啟,后面就可以下載并安裝Docker for Windows了。
下載安裝
-
進入網(wǎng)址https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows 下載并安裝。我安裝的是穩(wěn)定版。安裝過程沒什么要注意的。
-
啟動以后會出現(xiàn)在桌面的右下角區(qū)域,鼠標(biāo)放上去以后顯示Docker is running表示啟動成功,第一次安裝啟用好像是會彈出個Docker Cloud登錄界面,去注冊然后登錄,使用和git有點類似,可以pull圖像等等
2.docker的入門
開始使用
-
檢查Docker,Compose和Machine的版本
-
檢查版本信息,并確保docker命令正常工作
-
運行docker run hello-world以測試從Docker Hub中拉取圖像并啟動容器
-
使用命令docker run -it ubuntu bash運行一個Ubuntu容器,我之前已經(jīng)拉取過這個容器了,大概是幾十兆吧,所以直接啟用了,輸入exit命令停止容器
-
運行命令docker run -d -p 80:80 –name webserver nginx 啟動一個Dockerized webserver 會下載nginx容器圖像并啟動它,然后再打開瀏覽器鍵入http://localhost
-
運行docker ps 命令,檢查容器的詳細信息
-
停止或移除容器和圖像。如果你想停止網(wǎng)絡(luò)服務(wù)器,輸入:docker stop webserver然后重新啟動docker start webserver。要使用單個命令停止并刪除正在運行的容器,請鍵入: docker rm -f webserver。這將刪除容器,但不是 nginx圖像。您可以列出本地圖像docker images。你可能想要保留一些圖片,這樣你就不必再從Docker Hub中取出它們了。要刪除不再需要的圖像,請使用docker rmi后跟圖像ID或圖像名稱。例如docker rmi nginx
3.docker的常用配置
在PowerShell中設(shè)置 tab鍵自動補全(其實用的都是cmd.exe)
- 啟動一個的PowerShell(即以管理員身份運行)。搜索PowerShell,右鍵單擊,然后選擇以管理員身份運行。在PowerShell提示符下鍵入:
Set-ExecutionPolicy RemoteSigned
- 檢查策略設(shè)置是否正確,運行:
get-executionpolicy
應(yīng)該返回RemoteSigned。 - 安裝posh-dockerPowerShell模塊以自動完成Docker命令,鍵入:
Install-Module posh-docker
或者,要僅為當(dāng)前用戶安裝模塊,鍵入:Install-Module -Scope CurrentUser posh-docker
- 安裝完成后,只能為當(dāng)前PowerShell啟用自動完成功能,輸入:
Import-Module posh-docker
- 為了在所有PowerShell會話中保持Tab完成狀態(tài)$PROFILE,請在PowerShell提示符處輸入:
if (-Not (Test-Path $PROFILE)) { New-Item $PROFILE –Type File –Force}Add-Content $PROFILE "`nImport-Module posh-docker"
這將創(chuàng)建一個$PROFILE
如果不存在,并將此行添加到文件中: Import-Module posh-docker
要檢查文件是否已正確創(chuàng)建,或只需手動編輯,請在PowerShell中鍵入以下內(nèi)容: Notepad $PROFILE
打開一個新的PowerShell會話?,F(xiàn)在,當(dāng)你鍵入的前幾個字母后按Tab鍵,Docker命令(如開始,停止,運行及其選項)以及容器和映像名稱現(xiàn)在都應(yīng)該自動完成。
Settings
找到右下角的docker圖標(biāo),右擊選擇settings進去
-
General:這里是設(shè)置docker開機自啟,應(yīng)用程序啟動時檢查更新,發(fā)布使用情況統(tǒng)計信息
-
Advanced:分配cpu數(shù)量與內(nèi)存量
-
Daemon:Docker for windows10 可以配置阿里云鏡像,到https://cr.console.aliyun.com/ 注冊一個賬戶,登錄進去后再列表選擇加速器,把你的專屬加速器地址復(fù)制粘貼到Daemon的Registry mirrors中
4.用Dockerfile定義一個鏡像
在過去,如果你要開始編寫一個Python應(yīng)用程序,你的第一步就是在你的機器上安裝一個Python運行庫。但是,這會造成您的機器上的環(huán)境必須滿足一定條件以使您的應(yīng)用程序可以運行。
使用Docker,你可以將一個可移植的Python運行庫作為一個映像,不需要安裝。然后,您的構(gòu)建可以將基礎(chǔ)Python鏡像與應(yīng)用程序代碼一起包括在內(nèi),確保您的應(yīng)用程序,依賴項和運行時都一起運行。
這些可移植的鏡像是由一個叫做Dockerfile的東西來定義的
新建目錄文件
創(chuàng)建一個空目錄,我取名叫docker,然后分別在里面新建三個文件:Dockerfile,app.py,requirements.txt
三個文件中的內(nèi)容分別設(shè)計為:
1.Dockerfile:# Use an official Python runtime as a parent imageFROM python:2.7-slim# Set the working directory to /appWORKDIR /app# Copy the current directory contents into the container at /appADD . /app# Install any needed packages specified in requirements.txtRUN pip install --trusted-host pypi.python.org -r requirements.txt# Make port 80 available to the world outside this containerEXPOSE 80# Define environment variableENV NAME World# Run app.py when the container launchesCMD ["python", "app.py"]2.app.py: from flask import Flask from redis import Redis, RedisError import os import socket# Connect to Redisredis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)app = Flask(__name__)@app.route("/")def hello(): try: visits = redis.incr("counter") except RedisError: visits = "<i>cannot connect to Redis, counter disabled</i>" html = "<h3>Hello {name}!</h3>" "<b>Hostname:</b> {hostname}<br/>" "<b>Visits:</b> {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)if __name__ == "__main__": app.run(host='0.0.0.0', port=80)3. requirements.txt: Flask Redis
構(gòu)建鏡像
在docker目錄下打開cmd.exe運行命令(確保能夠找到Dockerfile文件,鏡像取名叫friendlyhello): docker build -t friendlyhello .
ps:千萬不要落了上面那行后面的那個點,曾經(jīng)入過坑的。。命令包括后面的那個點
然后再執(zhí)行命令:
docker images
運行鏡像程序:
docker run -p 4000:80 friendlyhello
可以看到Python正在為應(yīng)用程序提供消息的http://0.0.0.0:80。但是,這個消息來自容器內(nèi)部,它不知道我們將該容器的端口80映射到4000,從而打開URL: http://localhost:4000
停止容器運行
首先在接著上面的操作步驟后按下ctrl+c在終端退出,這并不意味著鏡像停止運行了
鍵入docker container ls 列出正在運行的容器
運行命令: docker container stop <Container NAME or ID>
停止容器。否則,在下一步中重新運行容器時,將會收到錯誤響應(yīng)。
5.聯(lián)系Docker Hub的常用操作
登錄到Docker Hub
前面已經(jīng)說過了,docker和git的操作有類似之處,所以docker也
有遠程倉庫,如果前面已經(jīng)注冊過并登錄了docker cloud,那么
訪問網(wǎng)址:https://hub.docker.com 在里面創(chuàng)建存儲庫,否則先
注冊吧。
push鏡像
前面在本地創(chuàng)建了一個friendlyhello的鏡像,現(xiàn)在要把它push到
自己的docker hub的存儲庫中去,首先:
1. 登錄docker hub (我已經(jīng)登錄過了。。再登錄一次吧)
2. 標(biāo)記鏡像:
把鏡像放入wangliguo存儲庫并標(biāo)記為test
3. 查看鏡像:
4. 發(fā)布鏡像(推送鏡像)
5. Docker Hub上查看鏡像:
6. 從遠程存儲庫中提取并運行鏡像:現(xiàn)在當(dāng)遠程存儲庫有了鏡像后,就可以從遠程存儲庫提取并運行了
6.服務(wù)
在分布式應(yīng)用程序中,應(yīng)用程序的不同部分被稱為“服務(wù)”。例如,想象一個視頻共享站點,它可能包括用于將應(yīng)用程序數(shù)據(jù)存儲在數(shù)據(jù)庫中的服務(wù),用于用戶上傳東西的視頻轉(zhuǎn)碼服務(wù),為前端服務(wù)等等。
服務(wù)實際上只是“生產(chǎn)中的容器”。服務(wù)只運行一個鏡像,但它編碼鏡像運行的方式 – 應(yīng)該使用哪個端口,容器應(yīng)該運行多少個副本,以便服務(wù)具有所需的容量,以及等等??s放服務(wù)會更改運行該軟件的容器實例的數(shù)量,從而為流程中的服務(wù)分配