学习自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     REPLICAS IMAGE PORTS  
w2bqgtlh3wy3   vote_db     replicated   0/1       postgres:9.4           
nyktxmg5czb5   vote_redis   replicated   0/1 redis: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_worker replicated 0/1 dockersamples/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当前还是有点难!

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

  1. Docker(四):Docker 命令大全

    容器生命周期管理 docker run :创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] OPTIONS说明: -a ...

  2. Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  3. windows docker 卸载_安装Docker(Docker Toolbox)与Splash库

    想要安装Splash库,先安装Docker. 1.Docker安装 但是面对windows运行环境,大部分的情况来看,需要先安装Docker Toolbox才可以. 我是win10系统,安装了Dock ...

  4. Docker源码分析(四):Docker Daemon之NewDaemon实现

    http://www.infoq.com/cn/articles/docker-source-code-analysis-part4 1. 前言 Docker的生态系统日趋完善,开发者群体也在日趋庞大 ...

  5. Spring Boot 2.0(四):使用 Docker 部署 Spring Boot

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目, ...

  6. DockOne微信分享(八十四):Docker在B站的实施之路

    本文讲的是DockOne微信分享(八十四):Docker在B站的实施之路[编者的话]B站一直在关注Docker的发展,去年成功在核心SLB(Tengine)集群上实施了Docker.今年我们对比了各种 ...

  7. Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)

    文章目录 Docker Compose搭建consul群集环境 认识Docker Compose IConsul Docker Compose容器编排 Dasker Compose配置常用字段 Bos ...

  8. Windows环境下,如何在Docker里运行SAP UI5应用

    本文面向的读者是对Docker技术有一些基本概念,但因为没有测试环境,所以没有动手操作过的朋友们. 最近Jerry因为要做一个新的SAP云产品开发,得搭各种开发环境,其中之一就是Docker. Jer ...

  9. (转)Spring Boot 2 (四):使用 Docker 部署 Spring Boot

    http://www.ityouknow.com/springboot/2018/03/19/spring-boot-docker.html Docker 技术发展为微服务落地提供了更加便利的环境,使 ...

最新文章

  1. SQLite异常 qAdmin: Cannot perform this operation on a closed dataset.
  2. python零基础怎么学-零基础如何学习Python?老男孩Python入门培训
  3. 2019.7.29学习整理python
  4. java构建json_Java构造和解析Json数据的两种方法详解一
  5. Java高级语法笔记-抽象类
  6. OA、CRM、进销存集成了,美女也不再愁了
  7. windows防火墙ntp服务器_Windows Server 2008 R2 NTP服务器
  8. 5G网络入门基础--5G网络的架构与基本原理
  9. 贪吃的九头龙(tyvj P1523)
  10. 用python画漂亮的网状几何图形
  11. vue 手风琴效果_Vue实现侧边菜单栏手风琴效果实例代码
  12. 15分钟正则表达式快速上手(js)
  13. SE(3)和se(3),左扰动模型
  14. Label Smoothing 标签平滑 (Label smooth regularization, LSR)
  15. 【无标题】There was an unexpected error (type=Internal Server Error, status=500).
  16. 同为标准版 OPPO Reno7和华为nova9怎么选,这几点要搞清楚
  17. argc,argv,argv[0]用法详解
  18. php检测txt中重复数据,Python实现检测文件的MD5值来查找重复文件案例
  19. 人工智能就业前景怎么样?
  20. 深入理解QStateMachine与QEventLoop事件循环的联系与区别

热门文章

  1. linux tar解压文件至指定目录,不包含原目录
  2. 龙ol服务器维护补偿boss,神话网游《龙OL》三大稀有特殊BOSS造型与技能简介
  3. 2019 vs 安装odt_2019年12月13日罗马协会直播预告
  4. 新福华无纺布周利民之三清山
  5. Suzano将在瑞士无纺布国际展览会上展示可持续桉木绒毛浆
  6. 软件测试面试题:解释什么是jmeter后置处理器?
  7. 搞笑类短视频素材怎么找?有哪些好用的网站?
  8. Linux文件归档工具——cpio
  9. mysql 模糊 语句_MySQL模糊查询语句整理集合
  10. html全屏遮罩层,js遮罩层穿透 怎么用JS弄遮罩层?全屏,有透明