从Windows走入Docker(四)如何使用Docker Desktop的快速5步教程

2023-05-16

学习自www.docker.com

步骤1:使用本地Web服务器

在不设置IIS的情况下运行IIS
如果您以前没有运行过Docker,这里有一个快速的方法来了解Docker在工作中的力量。首先,确保您正在使用Windows容器。然后在命令行中键入

docker  container  run  --detach  --publish  8080:80  --name  web  microsoft/iis:nanoserver
(之后耐心的等……)
最后显示:
Pull  complete
Digest:  sha256:6064d49ffd47f2c36c3bfbdd74ed87ec6932351de2dd81e90a6f5a7b27343c8f
Status:  Downloaded  newer  image  for  microsoft/iis:nanoserver
b6fc651fcb52d107e3956764af3d2541b8279f68e0a62406d765f27957e144a7
打开浏览器,地址栏输入:http://localhost:8080/
显示如下,运行成功。

接下来,在C:\temp文件夹下,新建文本文档。
打开。
输入:
  <  html>  <  body>  <  h1>Hello  myWorld!  <  /h1>  <  /body>  <  /html>
保存。
更名为index.html
停止容器:
docker  container  stop  web
将该文件复制到容器中,它将覆盖容器中的默认IIS主页:
docker  container  cp  C:\temp\index.html  web:C:\inetpub\wwwroot\index.html
再次启动容器:
docker  container  start  web
刷新http://localhost:8080看看你的新内容。显示下图运行成功。

您已经创建了一个Web服务器,使用了Microsoft发布和维护的Docker映像。Docker负责处理依赖关系。

当您完成任务时,最好停止并移除正在运行的容器
docker  container  stop  web
docker  container  rm  web

步骤2:定制并推送到Docker  Hub

下一步,创建您自己的自定义映像。您需要有一个Docker  ID
在同一个C:\temp目录中创建一个名为Dockerfile的文件。没有扩展名。
打开记事本,输入:
FROM  microsoft/iis:nanoserver
COPY  index.html  /inetpub/wwwroot
这告诉Docker使用IIS基映像,并拷贝您刚才创建的HTML文件。与手动将文件复制到容器中不同,您将创建一个已经包含HTML的映像。

构建映像
在终端中键入:
docker  image  build  --tag  <  YourDockerID>/firstimage  .
这里要注意两点:
1、<  YourDockerID>是你的Docker  ID
2、语句后面的“.”,告诉Docker在此目录的上下文中构建。因此,当它将文件复制到/inetPUB/wwwroot时,它将使用这个目录中的文件。

运行映像
docker  container  run  --detach  --publish  8081:80  --name  web2    <  YourDockerID>/firstimage
去http://localhost:8081查看新的页面

最后把映像推到Docker  Hub
docker  image  push  <  YourDockerID>/firstimage
文件有1.29G
系统总是提示:
docker  :  An  image  does  not  exist  locally  with  the  tag:  naturalism/firstiamge

最后,停止并移除正在运行的容器:

docker  container  stop  web2
docker  container  rm  web2

步骤3:运行多服务应用程序
        Docker很容易将多个服务连接在一起
        Docker  Compose  是用于定义和运行多容器Docker应用程序的工具。您可以使用YAML文件配置应用程序的服务。然后,使用一个命令创建并启动配置中的所有服务。Docker  Compose安装自动与Docker  Desktop一同安装。

        多容器应用程序是一个有多个容器运行和相互通信的应用程序。此示例使用一个简单的.NET  Core  Web应用程序,运行在MySQL数据库中。您可以查看我们的应用程序在dockersamples  GitHub  repo.我们已经把两个映像推到了Docker  Hub  在dockersamples  repo下。DockerComposed直接处理服务发现,允许应用程序直接引用服务,Docker将流量路由到正确的容器。要试用它,新建文本文件,打开。复制下面内容:

……

并粘贴到这个文件,保存。然后把它更名为docker-compose.yml。

        其中有很多细节,但基本上可以看到它指定要使用的映像、服务名称、应用程序配置、可用端口和不同服务所在的网络。

        要运行它,请打开命令行,并导航到与docker-come.yml文件相同的目录。在命令行,键入
        docker-compose  up  -d
        当它从DockerHub中提取映像并启动它们时,您将看到一堆命令经过。完成运行后,导航到http://localhost  你应该看看音乐专辑查看器。.NET  Core应用程序将数据保存在MySQL数据库中-不需要安装.NET  Core或MySQL,所有组件都在Docker中运行。

        若要停止和删除Docker创建的所有服务和资源,请输入:
        docker-compose  down

步骤4:编排:群集(Orchestration:  Swarm)
        在开始本节之前,请确保您正在使用Linux容器。Swarm确实支持Windows容器,但它们要大得多,需要更长的时间才能拉出来。

        虽然在一台机器上单独运行应用程序很容易,但业务流程允许您协调多台计算机来管理应用程序,包括复制、加密、负载平衡、服务发现等功能。如果你读过任何关于Docker的文章,你可能听说过Kubernetes和Docker  swarm模式。  Docker  Desktop是使用Swarm  或  Kubernetes最简单开始方式。

        群是一组机器正在运行Docker并加入到集群中。在这之后,您继续运行您习惯的Docker命令,但是现在这些命令是由群集管理器在集群上执行的。群中的机器可以是物理的,也可以是虚拟的。加入群后,它们被称为节点。

        群集模式使用管理器和工作人员运行应用程序。管理人员运行群集集群,确保节点能够相互通信,将应用程序分配给不同的节点,并处理集群中的各种其他任务。

        Swarm使用Docker命令行或Docker组合文件格式,并添加了一些内容。用几个简单的步骤试一试。

……

更名为docker-stack-simple.yml的文件。

        然后,从与该文件相同的目录中的命令行中,键入以下命令。
        docker  swarm  init
(必须切换到Linux容器。Windows容器不能正常运行。)



PS  G:\temp>  docker  swarm  init  
Swarm  initialized:  current  node  (c07o9awkcwwnej2le2ofqblm0)  is  now  a  manager.

To  add  a  worker  to  this  swarm,  run  the  following  command:

        docker  swarm  join  --token  SWMTKN-1-5gppq8okhu5b6pzhdlqhpnr7ecr6abmxvnwa9wwrbxfdw962fs-9cnlyljp4
78f3wvczw6yoiqtp  192.168.65.3:2377

To  add  a  manager  to  this  swarm,  run  'docker  swarm  join-token  manager'  and  follow  the  instructions.


      您应该看到一个可以复制和粘贴以向群集添加另一个节点的命令。为了我们的目的,现在不要在群中添加更多的节点。

        docker  stack  deploy  -c  docker-stack-simple.yml  vote


PS  G:\temp>  docker  stack  deploy  -c  docker-stack-simple.yml  vote
Creating  network  vote_frontend
Creating  network  vote_backend
Creating  service  vote_vote
Creating  service  vote_result
Creating  service  vote_worker
Creating  service  vote_redis
Creating  service  vote_db


        Docker会告诉您它正在创建网络和服务。都连接到一个叫做“投票”的堆栈上。您可以通过键入

        docker  stack  ls
        也许你列出一项,有5个服务。

PS  G:\temp>  docker  stack  ls
NAME                                SERVICES                        ORCHESTRATOR
vote                                5                                      Swarm  


        接下来,您可以通过键入
        docker  service  ls

PS  G:\temp>  docker  service  ls

 

ID    NAME  MODE    REPLICASIMAGEPORTS 
w2bqgtlh3wy3  vote_db    replicated  0/1      postgres:9.4         
nyktxmg5czb5  vote_redis  replicated  0/1redis:alpine    *:30000->6379/tcp
w1cofs8j7q4m  vote_result  replicated  0/1  dockersamples/examp  levotingapp_result:before*:5001->80/tcp
n5yrkahgt3s0  vote_vote  replicated  0/1  dockersamples/examp  levotingapp_vote:before  *:5000->80/tcp
flitscv0rg9f  vote_workerreplicated0/1dockersamples/examp  levotingapp_worker:latest  


        这将向您展示这5项服务,所有服务都有1份副本。都有一个名字您可以运行几次,直到所有副本都表示1/1。
        那么发生了什么?使用简单的撰写文件格式,您创建了一个包含5个组件的应用程序:
        1、Flask的投票页面,将结果推送给redis。
        2、存储键值对的redis实例。
        3、工作人员进入redis实例,取出数据并将其推入数据库。
        4、postgres数据库。
        5、一个运行在Node.js中的结果页面,它从数据库中抽取数据。
        现在,登录localhost:5000  去投票。你可以投票给猫或狗,无论你喜欢哪种。在localhost:5001你可以看到投票结果。打开不同的浏览器,添加额外的选票,如果你愿意的话。

所有这些组件的代码都在我们的示例投票应用程序在GitHub上。这里有很多事情要做,但这里有一些要点要强调:
        1、这些服务都通过名称相互引用。因此,当结果应用程序调用数据库时,它连接到“postgres@db”,集群负责将服务目录指向“db”。
        2、在多节点环境中,Swarm将按照您的需要展开副本。
        3、Swarm也会做基本的负载平衡。以下是你如何看待这一点:
        登录localhost:5000再来一次。注意页面底部的“由容器ID处理”。现在添加一个副本:
        docker  service  scale  vote_vote=3
        完成验证后,重新加载页面几次,然后看到容器ID在三个不同的值之间转换。这是三个不同的容器。即使它们位于不同的节点上,它们也会共享相同的入口和端口。

        若要在进入下一节之前进行清理,请键入
        docker  stack  rm  vote

PS  G:\temp>  docker  stack  rm  vote
Removing  service  vote_db
Removing  service  vote_redis
Removing  service  vote_result
Removing  service  vote_vote
Removing  service  vote_worker
Removing  network  vote_backend
Removing  network  vote_frontend

PS  G:\temp>  docker  swarm  leave  --force
Node  left  the  swarm.

步骤5:编排:Kubernetes
        在开始本节之前,请确保您正在使用Linux容器。Kubernetes还不支持Windows容器。
……

Kubernetes一直是启动状态!无语

 

结论:

     在Windows运行docker当前还是有点难!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从Windows走入Docker(四)如何使用Docker Desktop的快速5步教程 的相关文章

  • python二维列表按照某列(字符串列)排序;忽略大小写+区分大小写

    python二维列表按照某列 xff08 字符串列 xff09 排序 xff1b 忽略大小写 43 区分大小写 使用list自带的sorted 方法 xff0c data 61 sorted data key 61 lambda x x 1
  • tkinter 出现两个窗口 tk(未响应) 解决方法

    问题 xff1a tkinter界面开发 xff0c 莫名出现一个叫 tk 未响应 的小窗口 xff0c 最后发现是因为自定义了窗口图标导致产生多余窗口 解决方法 xff1a 将设置窗口图标代码放到设置窗口大小代码之后即可 xff08 该方
  • python3适配pykml教程

    pykml是用python2写的 xff0c 由于python3和python2语法及函数名有所不同 xff0c python3使用的时候需要手动修改几个地方 xff0c 如下 xff1a 1 出现 xff1a ModuleNotFound
  • c51单片机学习笔记-独立按键实验

    目的 xff1a 通过开发板上的独立按键 K1 控制 D1 指示灯亮灭 编译软件 xff1a keil5 过程 xff1a xff08 1 xff09 定义独立按键控制脚 sbit KEY1 61 P3 1 sbit KEY2 61 P3
  • openpyxl为指定区域设置边框为粗匣框线

    前言 xff1a 最近在用openpyxl分析Excel数据 xff0c 为了让表格层次更分明 xff0c 想给制定区域添加粗匣框线 xff0c 网上没有找到现成的方法 xff0c 自己摸索了一下 xff0c 终于解决了 xff0c 现在记
  • ubuntu上网问题以及ping通网络设备

    问题一 xff1a ubuntu上网问题 如何ping www baidu com Ubuntu上网模式有两种 xff1a 桥接和NAT 1 桥接模式 xff1a 前提是 xff1a 主机是连接的无线网 xff0c 主机有线网卡的IP设置的
  • Python脚本调用C++动态库,C++调用Python脚本实操

    一 Python调用C 43 43 动态库 实现方法 xff1a 使用python 的ctypes 模块加载dll 首先 xff0c 需要用VS创建一个dll动态库 xff0c 网上方法很多 xff0c 就不细说了 xff0c 代码如下 x
  • 利用GPU训练时的常见错误

    1 CUDA VIDIBLE DEVICES 61 4 5 python3 main py 我想在集群条件下利用4 5号GPU xff0c 由于模型较小 xff0c 并不清楚是都可以指定4 5号GPU xff08 内存占用情况看不出来 后续
  • Jetson TX1底板的接口调试

    1 I2C总线上外设查询 I2C Tools的安装和使用 在控制台输入 sudo apt get install i2c tools 安装完成后可以使用命令验证安装成功 sudo i2cdetect l I2C设备查询使用 sudo i2c
  • 驱动——platform驱动总线三种匹配方式

    三种platform驱动匹配方式代码案例以及现象 方式一 xff1a 通过设置名字进行匹配 相关API简介 xff1a 1 platform device的API 分配对象 struct platform device const char
  • 开源框架APM工具--SkyWalking原理与应用

    一 分布式链路追踪简介 随着业务系统的不断发展 微服务架构的演进 xff0c 从原来的单体应用架构 垂直应用架构 分布式 SOA 架构到现在的微服务架构 xff0c 系统逐步走向微服务化以适应用户高并发请求等需求 在微服务架构中 xff0c
  • 什么是弹性云服务器?

    ecs云服务器是由CPU 内存 镜像 云硬盘组成的一种可随时获取 弹性可扩展的计算服务器 xff0c 同时它结合虚拟私有云 虚拟防火墙 数据多副本保存等能力 xff0c 为您打造一个高效 可靠 安全的计算环境 xff0c 确保您的服务持久稳
  • linux下修改MAC地址的问题解决

    在linux中 xff0c 修改MAC地址 ifdown eth0 ifconfig eth0 hw ether 12 xff1a 34 xff1a 56 xff1a 78 xff1a 90 xff1a 12 xff08 修改的MAC地址跟
  • 51串口发送数据的格式

    串行口控制寄存器SCON SCON的字节地址是98H xff0c 其格式如下 xff1a SM0 SM1 xff1a 串行口工作方式控制位 xff1a SM0 SM1 工作方式 功能 波特率 00 方式0 同步移位寄存器 fosc 12 0
  • c51单片机学习笔记-矩阵按键实验

    目的 xff1a 通过数码管显示矩阵按键 S1 S16 按下后键值 0 F 编译软件 xff1a keil5 过程 xff1a xff08 1 xff09 定义各端口 include 34 reg52 h 34 typedef unsign
  • CMake 添加第三方库的几种依赖方式

    转载链接 xff1a C 43 43 工程 xff1a 总结 CMake 添加第三方库依赖方式git submodule find library FetchContent CPM等 github地址 cpp cmake example 第
  • vue.js中v-for的使用及索引获取

    vue js中v for的使用及索引获取 1 v for 直接上代码 示例一 xff1a lt DOCTYPE html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt
  • (转贴)Windows CE 5.0下串口驱动硬件FIFO控制Bug分析及修正方法

    转贴自 xff1a 驱动开发网 原贴地址 xff1a http bbs driverdevelop com read php tid 61 109193 amp fpage 61 0 amp toread 61 amp page 61 1
  • 四剑客和正则表达式常见故障及困惑集合(待更新)

    一 find命令 warning警告 maxdepth 这个参数要放在其他参数之前 root 64 oldboyedu59 find type d maxdepth 1 find warning you have specified the
  • sed的使用

    一 xff0c 替换文本 s pattern replacement flags replacement会替换pattern 例如 xff1a root 64 node1 sed cat data2 txt This is a test o

随机推荐

  • KVM虚拟化-创建-桥接-硬盘-快照

    1 创建 使用virt manager进行创建 virt manager进入管理器 点击如图进行创建 将ISO下载到虚拟机里面 点击浏览 下面是虚拟机名字 选择本地浏览 选中CentOS的iso 选择后前进 选择内存和cpu xff0c 前
  • 串口专题(一)——基础知识

    前言 xff1a 为了方便查看博客 xff0c 特意申请了一个公众号 xff0c 附上二维码 xff0c 有兴趣的朋友可以关注 xff0c 和我一起讨论学习 xff0c 一起享受技术 xff0c 一起成长 1 概念介绍 串行口是计算机一种常
  • STM32中晶振的原理与作用

    前言 xff1a 为了方便查看博客 xff0c 特意申请了一个公众号 xff0c 附上二维码 xff0c 有兴趣的朋友可以关注 xff0c 和我一起讨论学习 xff0c 一起享受技术 xff0c 一起成长 转载地址 STM32中晶振的原理与
  • STM32学习笔记一一UCOSII(1)

    前言 xff1a 为了方便查看博客 xff0c 特意申请了一个公众号 xff0c 附上二维码 xff0c 有兴趣的朋友可以关注 xff0c 和我一起讨论学习 xff0c 一起享受技术 xff0c 一起成长 1 简介 UCOSII 是一个可以
  • PADS 原理图库文件绘制

    前言 xff1a 为了方便查看博客 xff0c 特意申请了一个公众号 xff0c 附上二维码 xff0c 有兴趣的朋友可以关注 xff0c 和我一起讨论学习 xff0c 一起享受技术 xff0c 一起成长 1 PADS Logic 参数设置
  • prometheus监管平台(一)(开源)

    prometheus监管平台 xff08 一 xff09 xff08 开源 xff09 一 登录二 首页三 General Management功能四 Host Management功能五 Job Management功能六 Alarm M
  • vncserver连接后窗口显示太小

    VNC server的默认的分辨率是1024x768 如果要改变VNC server的分辨率 1 可以用一下命令启动VNC server root 64 localhost vncserver geometry 1280x1024 这种修改
  • dfs (二进制枚举,暴力,马的管辖)

    在中国象棋中 xff0c 马是走日字的 一个马的管辖范围指的是当前位置以及一步之内能走到的位置 xff0c 下图的绿色旗子表示马能走到的位置 如果一匹马的某个方向被蹩马脚 xff0c 它就不能往这个方向跳了 xff0c 如下图所示 xff0
  • linux进程(四)——进程的几种状态

    usr src linux headers 4 15 0 45 include linux Used in tsk gt state define TASK RUNNING 0x0000 define TASK INTERRUPTIBLE
  • linux网络设备驱动(一)

    一 框架 1 xff09 网络协议接口层 向网络层协议提供统一的数据包收发接口 xff0c 不论上层协议是ARP xff0c 还是IP xff0c 都通过dev queue xmit 函数发送数据 xff0c 并通过netif rx 函数接
  • linux taskset命令

    一 简介 taskset命令用于设置进程 xff08 或线程 xff09 的处理器亲和性 xff08 Processor Affinity xff09 xff0c 可以将进程 xff08 或线程 xff09 绑定到特定的一个 或 多个CPU
  • STM32使用cubemx、HAL库硬件SPI驱动ICM20602

    软件平台 xff1a cubemx mdk 硬件平台 xff1a stm32f103rct6 ICM20602 工程源代码链接 xff1a https download csdn net download wwwlyj123321 1099
  • 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程

    提示 xff1a 作者简介 xff1a 盐焗小星球 wyb xff0c 一名在读的电子信息工程专业大学生 x1f4d1 个人主页 xff1a 盐焗小星球 wyb的主页 x1f4eb 如果文章知识点有错误的地方 xff0c 请指正 xff01
  • IMU:姿态解算算法集合

    文章目录 一 IMU原理二 源码 一 IMU原理 二 源码 源文件 xff1a span class token comment include 34 IMU h 34 span span class token comment inclu
  • ORB特征提取、匹配及位置估计

    1 什么是ORB特征点 xff1f 图像特征点可以理解为图像中比较显著的点 xff0c 如轮廓点 xff0c 较暗区域中的亮点 xff0c 较亮区域中的暗点等 ORB采用FAST xff08 features from accelerate
  • c51单片机学习笔记-LED点阵实验(点亮一个点)

    目的 xff1a xff1a 在点阵屏上点亮一个点 方法 xff1a 让 LED 点阵的左上角第一个点点亮 xff0c 实际上就是将第一个点对应的行为高电平 xff0c 列为低电平 即可 也就是让 74HC595 输出 0X80 xff08
  • tepedef和define的区别

    xfeff xfeff 1 xff1a typedef 可以简化复杂的类型声明 2 xff1a 定义与平台无关的类型 3 xff1a 可以与 struct 结合使用 4 xff1a typedef 和 define 执行时间不同 关键字ty
  • 如何让虚拟机里的Ubuntu通过连接手机USB数据线上网

    目录 一 前言 二 Windows联网方法 三 Ubuntu联网方法 一 前言 最近遇到了这样一个问题 xff0c 有一台台式机 xff0c 地插网口无法访问外网 xff0c 周边也没有无线路由器 xff0c 要访问外网 xff0c 该如何
  • 老的Struts项目还在维护。但新的项目开发,更多转向了Spring MVC

    在Java后端开发中 xff0c MVC模型还是主流 而Struts作为一个MVC框架 xff0c 单从技术上来说 xff0c 还是很优秀的 但是 xff0c 现在Spring实在是太强势了 xff0c 越来越成为Java开发中的 一站式
  • 从Windows走入Docker(四)如何使用Docker Desktop的快速5步教程

    学习自www docker com 步骤1 xff1a 使用本地Web服务器 在不设置IIS的情况下运行IIS 如果您以前没有运行过Docker xff0c 这里有一个快速的方法来了解Docker在工作中的力量 首先 xff0c 确保您正在