首頁  >  文章  >  運維  >  Win10中docker的安裝與使用(圖文詳解)

Win10中docker的安裝與使用(圖文詳解)

WBOY
WBOY轉載
2021-12-29 17:41:5417502瀏覽

這篇文章為大家帶來了關於如何在win10上安裝與使用docker的相關知識,希望對大家有幫助。

Win10中docker的安裝與使用(圖文詳解)

1.docker的安裝

環境準備

Docker for Windows是一個Docker Community Edition(CE)應用程式。 Docker for Windows安裝套件包含了在Windows系統上執行Docker所需的一切。如果你不想裝虛擬機,想直接在你的Windows作業系統中安裝與學習使用docker,那麼你必須先查看你的系統是否符合Docker for Windows的安裝與使用要求。

  1. 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

  2. 如果你滿足Docker for Windows的環境條件了,那麼先檢查電腦的虛擬化開啟了沒有:進入任務管理器(ctrl alt delete),點擊性能->cpu ,查看虛擬化是否已啟用,如果虛擬化是已禁用,那麼你需要重啟電腦進入bios開啟虛擬化(我們的發的筆記本cpu都是支援虛擬化的,重啟時進入bios按esc -> 再按f12 -> 去開啟虛擬化)

  3. 開啟虛擬化重啟後,進入任務管理器看虛擬化是否已啟用。
    Win10中docker的安裝與使用(圖文詳解)

  4. 然後再是進入電腦的控制面板->程式->啟用或關閉Windows功能->把Hyper-v勾上,啟用後電腦會重啟,後面就可以下載並安裝Docker for Windows了。
    Win10中docker的安裝與使用(圖文詳解)

下載安裝

  1. #進入網址https://docs.docker.com/ docker-for-windows/install/#download-docker-for-windows 下載並安裝。我安裝的是穩定版。安裝過程沒什麼要注意的。
    Win10中docker的安裝與使用(圖文詳解)

  2. 啟動以後會出現在桌面的右下角區域,滑鼠放上去以後顯示Docker is running表示啟動成功,第一次安裝啟用好像是會彈出個Docker Cloud登入介面,去註冊然後登錄,使用和git有點類似,可以pull映像等等
    Win10中docker的安裝與使用(圖文詳解)

2.docker的入門

開始使用

  1. 檢查Docker,Compose和Machine的版本
    Win10中docker的安裝與使用(圖文詳解)

  2. 檢查版本信息,並確保docker命令正常工作
    Win10中docker的安裝與使用(圖文詳解)
    Win10中docker的安裝與使用(圖文詳解)
    Win10中docker的安裝與使用(圖文詳解)

  3. #運行docker run hello-world以測試從Docker Hub中拉取映像並啟動容器
    Win10中docker的安裝與使用(圖文詳解)

  4. 使用指令docker run -it ubuntu bash運行一個Ubuntu容器,我之前已經拉取過這個容器了,大概是幾十兆吧,所以直接啟用了,輸入exit指令停止容器
    Win10中docker的安裝與使用(圖文詳解)

  5. #執行指令docker run -d -p 80:80 –name webserver nginx 啟動一個Dockerized webserver會下載nginx容器映像並啟動它,然後再開啟瀏覽器鍵入http://localhost
    Win10中docker的安裝與使用(圖文詳解)

  6. #執行docker ps 指令,檢查容器的詳細資料
    Win10中docker的安裝與使用(圖文詳解)

  7. 停止或移除容器和映像。如果你想停止網頁伺服器,輸入:docker stop webserver然後重新啟動docker start webserver。若要使用單一指令停止並刪除正在執行的容器,請鍵入: docker rm -f webserver。這將刪除容器,但不是 nginx映像。您可以列出本機映像docker images。你可能會想要保留一些圖片,這樣你就不必再從Docker Hub中取出它們了。若要刪除不再需要的映像,請使用docker rmi後面接著映像ID或映像名稱。例如docker rmi nginx
    Win10中docker的安裝與使用(圖文詳解)

3.docker的常用配置

在PowerShell中設定tab鍵自動補全(其實用的都是cmd.exe)

  1. 啟動一個的PowerShell(即以管理員身分執行)。搜尋PowerShell,右鍵單擊,然後選擇以管理員身份執行。在PowerShell提示符號下鍵入:
    Set-ExecutionPolicy RemoteSigned
  2. 檢查策略設定是否正確,執行:get-executionpolicy
    應該會傳回 RemoteSigned。
  3. 安裝posh-dockerPowerShell模組以自動完成Docker指令,鍵入:Install-Module posh-docker或者,要僅為目前使用者安裝模組,鍵入:
    Install -Module -Scope CurrentUser posh-docker
  4. 安裝完成後,只能為目前PowerShell啟用自動完成功能,輸入:Import-Module posh-docker
  5. 為了在所有PowerShell會話中保持Tab完成狀態$PROFILE,請在PowerShell提示符處輸入:
if (-Not (Test-Path $PROFILE)) {
    New-Item $PROFILE –Type File –Force}Add-Content $PROFILE "`nImport-Module posh-docker"

這將建立一個$PROFILE如果不存在,並將此行新增至檔案:
Import-Module posh-docker
若要檢查檔案是否已正確創建,或只需手動編輯,請在PowerShell中鍵入以下內容:
Notepad $PROFILE
開啟一個新的PowerShell會話。現在,當你鍵入的前幾個字母後按Tab鍵,Docker命令(如開始,停止,運行及其選項)以及容器和映像名稱現在都應該自動完成。
Win10中docker的安裝與使用(圖文詳解)

Settings

找到右下角的docker圖標,右鍵選擇settings進去

  1. General :這裡是設定docker開機自啟,應用程式啟動時檢查更新,發布使用狀況統計資料
    Win10中docker的安裝與使用(圖文詳解)

  2. #Advanced:分配cpu數量與記憶體量
    Win10中docker的安裝與使用(圖文詳解)

  3. Daemon:Docker for windows10 可以配置阿里雲鏡像,到https://cr.console.aliyun.com/ 註冊一個帳戶,登入進去後再列表選擇加速器,把你的專屬加速器位址複製貼上到Daemon的Registry mirrors中
    Win10中docker的安裝與使用(圖文詳解)
    Win10中docker的安裝與使用(圖文詳解)

4.用Dockerfile定義一個映像

在過去,如果你要開始編寫一個Python應用程序,你的第一步就是在你的機器上安裝一個Python運行庫。但是,這會造成您的機器上的環境必須滿足一定條件以使您的應用程式可以運行。
使用Docker,你可以將一個可移植的Python運行庫當作一個映像,不需要安裝。然後,您的建置可以將基礎Python鏡像與應用程式程式碼一起包括在內,確保您的應用程序,依賴項和運行時都一起運行。
這些可移植的映像像是由一個叫做Dockerfile的東西來定義的

新目錄檔案

建立一個空目錄,我取名叫docker,然後在裡面分別新建三個檔案:Dockerfile,app.py,requirements.txt
Win10中docker的安裝與使用(圖文詳解)

三個檔案中的內容分別設計為:

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

构建镜像

在docker目录下打开cmd.exe运行命令(确保能够找到Dockerfile文件,镜像取名叫friendlyhello):
docker build -t friendlyhello .
ps:千万不要落了上面那行后面的那个点,曾经入过坑的。。命令包括后面的那个点
Win10中docker的安裝與使用(圖文詳解)

然后再执行命令:
docker images
Win10中docker的安裝與使用(圖文詳解)

运行镜像程序:
docker run -p 4000:80 friendlyhello
Win10中docker的安裝與使用(圖文詳解)

可以看到Python正在为应用程序提供消息的http://0.0.0.0:80。但是,这个消息来自容器内部,它不知道我们将该容器的端口80映射到4000,从而打开URL: http://localhost:4000
Win10中docker的安裝與使用(圖文詳解)

停止容器运行

首先在接着上面的操作步骤后按下ctrl+c在终端退出,这并不意味着镜像停止运行了
键入docker container ls 列出正在运行的容器
Win10中docker的安裝與使用(圖文詳解)
Win10中docker的安裝與使用(圖文詳解)

运行命令:
docker container stop <container name or id></container>
停止容器。否则,在下一步中重新运行容器时,将会收到错误响应。
Win10中docker的安裝與使用(圖文詳解)

5.联系Docker Hub的常用操作

登录到Docker Hub

前面已经说过了,docker和git的操作有类似之处,所以docker也
有远程仓库,如果前面已经注册过并登录了docker cloud,那么
访问网址:https://hub.docker.com 在里面创建存储库,否则先
注册吧。
Win10中docker的安裝與使用(圖文詳解)

push镜像

前面在本地创建了一个friendlyhello的镜像,现在要把它push到
自己的docker hub的存储库中去,首先:
1. 登录docker hub (我已经登录过了。。再登录一次吧)
Win10中docker的安裝與使用(圖文詳解)
2. 标记镜像:
把镜像放入wangliguo存储库并标记为test
Win10中docker的安裝與使用(圖文詳解)
3. 查看镜像:
Win10中docker的安裝與使用(圖文詳解)
4. 发布镜像(推送镜像)
Win10中docker的安裝與使用(圖文詳解)
5. Docker Hub上查看镜像:
Win10中docker的安裝與使用(圖文詳解)
6. 从远程存储库中提取并运行镜像:现在当远程存储库有了镜像后,就可以从远程存储库提取并运行了
Win10中docker的安裝與使用(圖文詳解)
Win10中docker的安裝與使用(圖文詳解)

6.服务

在分布式应用程序中,应用程序的不同部分被称为“服务”。例如,想象一个视频共享站点,它可能包括用于将应用程序数据存储在数据库中的服务,用于用户上传东西的视频转码服务,为前端服务等等。
服务实际上只是“生产中的容器”。服务只运行一个镜像,但它编码镜像运行的方式 - 应该使用哪个端口,容器应该运行多少个副本,以便服务具有所需的容量,以及等等。缩放服务会更改运行该软件的容器实例的数量,从而为流程中的服务分配更多的计算资源。
使用Docker平台定义,运行和扩展服务非常简单 - 只需编写一个docker-compose.yml文件即可。

创建一个docker-compose.yml文件

Win10中docker的安裝與使用(圖文詳解)
键入:

version: "3"services:
  web:
    # replace username/repo:tag with your name and image details
    image: 15433/wangliguo:test
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

拉取的是上个步骤中的存储库的tag。
运行该镜像的5个实例作为一个服务调用web,限制每个使用,最多10%的CPU(跨所有核心)和50MB的RAM。
如果一个失败,立即重新启动容器。
将主机上的端口80映射到web端口80。
指导web容器通过一个负载平衡的网络共享80端口webnet。(在内部,容器本身将web在临时端口上发布到 端口80)。
webnet使用默认设置(这是一个负载平衡覆盖网络)定义网络。

运行新的负载均衡应用程序

先运行命令:docker swarm init
Win10中docker的安裝與使用(圖文詳解)
然后再运行命令:docker stack deploy -c docker-compose.yml getstartedlab
给它取名叫getstartedlab
Win10中docker的安裝與使用(圖文詳解)
服务堆栈在这台主机上运行了5个部署镜像的容器实例
运行命令查看:docker service ls
Win10中docker的安裝與使用(圖文詳解)
在服务中运行的单个容器称为任务,可以看到上面有个getstartedlab_web的服务
运行命令docker service ps getstartedlab_web 查看此服务下的任务:
Win10中docker的安裝與使用(圖文詳解)
如果只列出系统中的所有容器,也会显示任务,但不会被服务过滤:
运行命令:docker container ls -q
Win10中docker的安裝與使用(圖文詳解)
然后打开浏览器,键入http://localhost
Win10中docker的安裝與使用(圖文詳解)
点击刷新多次,可以发现Hostname的更改,以循环方式选择5个任务中的一个来响应。容器ID将与前一个命令(docker container ls -q)的输出相匹配。

更改应用程序

比如更改docker-compose.yml中的replicas值,保存更改并重新运行docker stack deploy命令来更新应用程序:
Win10中docker的安裝與使用(圖文詳解)
运行命令:
docker stack deploy -c docker-compose.yml getstartedlab
Win10中docker的安裝與使用(圖文詳解)
Docker会做一个就地更新,然后重新运行docker container ls -q以查看重新配置的已部署实例
Win10中docker的安裝與使用(圖文詳解)
可以看到之前是6个,现在是7个,刚好多了一个任务
ps:电脑中还运行这之前步骤中从docker hub中拉取并运行着的那个任务,所以会看到6个和7个

關閉應用程式和群組

關閉應用程式docker stack rm getstartedlab
Win10中docker的安裝與使用(圖文詳解)
關閉群組docker swarm leave –force
Win10中docker的安裝與使用(圖文詳解)
現在服務中的任務都關閉了以後再運行命令:
docker container ls -q
Win10中docker的安裝與使用(圖文詳解)
# 這就是上面說的那個之前步驟中從docker hub中拉取並運行著的那個任務

7.叢集

了解叢集

swarm是運行Docker並加入到一個叢集中的一組機器。但是現在它們將由群集管理器在群集上執行。群體中的機器可以是實體的或虛擬的。加入群體後,他們被稱為節點。
Swarm管理人員可以使用多種策略來運行容器,例如「最空的節點」(emptiest node) - 它使用容器填充最少使用的機器。或“全局”,這確保了每台機器只能得到指定容器的一個實例。您可以指示swarm manager在Compose檔案中使用這些策略。
群體管理者是群體中唯一可以執行你的指令的機器,或是授權其他機器作為工作者加入群體。工人提供能力,並沒有權力告訴任何其他機器可以做什麼和不可以做什麼。
到目前為止,之前都是在本機上以單主機模式使用Docker。但是Docker也可以切換到群集模式,這就是使用群集的原因。啟用群組模式使目前機器成為群組管理器。則Docker將執行您正在管理的叢集上執行的命令,而不僅僅是在目前的機器上。

建立一個叢集

一個群組由多個節點組成,可以是實體機器或虛擬機器。基本的概念很簡單:運行docker swarm init啟用群組模式,使當前的機器成為群組管理器,然後docker swarm join在其他機器上運行 ,讓它們作為工人加入群體。下面將使用虛擬機器快速建立一個雙機群集,並將其變成群集。
步驟:
1. 以管理員運行cmd.exe 這裡必須是管理員運行,不然後續操作權限不夠
Win10中docker的安裝與使用(圖文詳解)
2. 運行docker swarm init啟用群組模式,使當前的機器成為群組管理器,然後docker swarm join在其他機器上運行,讓它們作為工人加入群體。
3. 啟動Hyper-V管理器
點選開始windows管理工具Hyper-V管理器
Win10中docker的安裝與使用(圖文詳解)
4. 點選右側選單中的虛擬交換器管理器
Win10中docker的安裝與使用(圖文詳解)
5. 點選建立類型為外部網路的虛擬交換機,給它的名稱myswitch,並檢查框共用您的主機的活動網路介面卡
Win10中docker的安裝與使用(圖文詳解)
6. 使用節點管理工具建立幾個虛擬機器docker-machine:
docker-machine create -d hyperv –hyperv-virtual-switch “myswitch” myvm1
docker-machine create -d hyperv –hyperv-virtual-switch “myswitch” myvm2
Win10中docker的安裝與使用(圖文詳解)
之前我已經建立過了,所以我現在再新建兩個:myvm3 和myvm4
docker-machine create -d hyperv –hyperv-virtual-switch “myswitch” myvm3
docker-machine create -d hyperv –hyperv-virtual-switch “myswitch” myvm4
Win10中docker的安裝與使用(圖文詳解)
Win10中docker的安裝與使用(圖文詳解)
Win10中docker的安裝與使用(圖文詳解)
7. 現在建立了兩台虛擬機,分別建立了兩台虛擬機,分別命名為myvm3和myvm4。使用指令
docker-machine ls 列出機器並取得其IP位址。
Win10中docker的安裝與使用(圖文詳解)

#

初始化群并添加节点

  1. 先使用命令docker-machine ssh myvm3
    Win10中docker的安裝與使用(圖文詳解)
    然后让myvm3 成为一个管理员:docker swarm init
    注意红框中的内容,这是后面的myvm4 加入集群要执行的命令
    Win10中docker的安裝與使用(圖文詳解)
    运行命令:docker node ls
    Win10中docker的安裝與使用(圖文詳解)
    可以看到myvm3 已经成为管理员了

  2. 以管理员身份再运行一个cmd.exe.然后运行命令:docker-machine ssh myvm4
    Win10中docker的安裝與使用(圖文詳解)
    然后再运行命令:(这就是上一页中图片里红框中的内容,下面的token是我这里的,正常运行到这里的时候是去myvm3的docker swarm init命令中把红框框位置里的命令复制粘贴过来执行)

docker swarm join --token SWMTKN-1-0csyw4yz6uxob90h0b8ejoimimrgisiuy9t2ugm8c1mxfvxf99-7q7w5jw1mrjk1jlri2bcgqmu8 10.211.106.194:2377

Win10中docker的安裝與使用(圖文詳解)
然后再切换到myvm3 的cmd.exe中执行命令:docker node ls
Win10中docker的安裝與使用(圖文詳解)
可以看到,我们已经创建了一个简单的集群。、

附离开群命令:docker swarm leave

在集群上部署应用程序

  1. docker-machine为swarm管理器配置一个shell
    运行命令:docker-machine env myvm3
    Win10中docker的安裝與使用(圖文詳解)
    注意最后一行的内容
    我这里是@FOR /f "tokens=*" %i IN ('docker-machine env myvm3') DO @%i
    复制粘贴运行它
    Win10中docker的安裝與使用(圖文詳解)
    再运行docker-machine ls以验证它myvm3 是否为活动机器
    Win10中docker的安裝與使用(圖文詳解)

  2. 在swarm管理器上部署应用程序
    以部署我们之前docker-compose.yml服务为例
    Win10中docker的安裝與使用(圖文詳解)
    首先在这个以管理员身份打开的cmd中进入到docker-compose.yml文件的所在的目录中去,我的因为在D/docker中,如果不过来,那么执行命令:
    docker stack deploy -c docker-compose.yml getstartedlab会出现:
    Win10中docker的安裝與使用(圖文詳解)
    进入目录后执行上面那条命令:
    Win10中docker的安裝與使用(圖文詳解)
    再执行命令docker stack ps getstartedlab 查看服务详情:
    Win10中docker的安裝與使用(圖文詳解)
    如果发现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 就好了

  3. 浏览器访问集群的网址:
    如图红框框所示,浏览器上访问其中的任何一个,然后刷新,将看到6个可能的容器ID,它们都是随机循环的,展示了负载平衡
    Win10中docker的安裝與使用(圖文詳解)

  4. 其他的一些命令:
比如说如果修改了docker-compose.yml文件后,执行命令:
docker stack deploy -c docker-compose.yml getstartedlab
再次运行以部署这些更改即可
比如说前面提到的移除应用程序:docker stack rm getstartedlab
离开群:docker swarm leave –force
重新启动已停止的虚拟机,执行:
docker-machine start <machine-name></machine-name>

Win10中docker的安裝與使用(圖文詳解)

推薦學習:《docker影片教學

以上是Win10中docker的安裝與使用(圖文詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除