前言

Windows Server 2016正式版发布已经有近半年时间了,除了看到携程的同学分享了一些Windows Server Docker的实践经验,网上比较深入的资料,不管是中文或英文的,都还不太多。工作中对Windows Server 2016下的Docker,也评估了一段时间了,特此做一些分享,帮助大家填坑。本系列的讨论主要关注Windows Server 2016下的原生Docker容器,不涉及Hyper-V模式的容器。

准备

既然是Windows Server 2016下的Docker,首先我们要安装Windows Server 2016环境。条件允许的话,还是推荐使用物理机,因为实际使用中,直接在物理机操作,一方面响应更快,也能减少不必要的虚拟机软件本身的兼容性问题。如果,条件实在不允许,想要使用虚拟机的话,建议使用VMWARE系列。最新的VMWARE vSphere 6.5+, Fusion 8.5+和Workstation 12.5+下亲测都没问题,分配4G以上内存即可,整体系统响应还能接受。建议别在Hyper-V下安装,不然真会慢到怀疑人生的。

如果想使用Vagrant安装,可以使用jacqinthebox/windowsserver2016和stefanscherer/windows_2016_docker这两个box。不过,vagrant box国内网络下载速度超慢,反而微软官网的下载速度还行,所以其实自己下载试用版的Windows Server 2016的ISO安装也花不了多少时间。

那么,假设你已经有了一个全新安装的Windows Server 2016带GUI的系统,并且已经安装了全部更新补丁,下面就正式开始我们的Windows Server Docker之旅。

安装Docker服务

安装docker服务一般都会参考微软官方的quickstart windows server文档,按照它的步骤安装行不行?行。但是,有一些细节,它分散到别的几个页面了,如果你没有都仔细读一下,并亲自体验一下相关功能的话,很可能会遇到一些坑。所以,建议按照下面的步骤:

  1. 安装OneGet的docker provider,问你Yes/No,自然选Y:

    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
  2. 安装docker包,问你All/Yes/No,选A:

    Install-Package -Name docker -ProviderName DockerMsftProvider
  3. 重启机器
    安装完docker包后,如果你立刻尝试在命令行执行任何docker命令,比如:docker images,会报无法连接服务器错误,原因是,必须重启一下机器。

  4. 重启完机器回来,我们应该已经可以执行比如docker images这样的命令了,不过,有可能你打开一个cmd或者powershell窗口,执行docker images会收到下面的错误,不用慌,那是因为你没有以Adnimistrator模式打开cmd或powershell窗口:

    ...省略... //./pipe/docker_engine: Access is denied ...省略...
  5. 以administrator模式打开powershell窗口,执行docker images,是不是成功了?小兴奋 :)

  6. 下面你想试试pull一个image或者运行一个未曾下载过的image?如果在墙外,应该没问题。绝大多数情况下,在墙内的同学会遇到无法连接docker的服务器错误。什么?有人问什么是“墙”?那个——请自行google一下百度。言归正传,访问不了墙外的,我们就需要访问墙内的镜像,阿里云开发者平台和DaoCloud都提供了免费的docker镜像服务,需要先免费注册一下。

  7. 假设你已经注册了阿里云开发账号或者daocloud账号,拿到比如阿里云的类似https://xxxxxxxx.mirror.aliyuncs.com的地址,我们需要将镜像地址配置到docker服务。请从文件浏览器中打开C:\ProgramData\docker\config目录。注意C:\ProgramData\是一个默认隐藏的目录,直接从C盘浏览是看不到,需要自己地址栏打一下。接下来,我们需要在config目录下新建一个名叫daemon.json的文本文件,包含下面的内容(别忘了将镜像地址替换成你自己的,不然后面报地址不能解析别怪我啊):

    {"registry-mirrors": ["https://xxxxxxxx.mirror.aliyuncs.com"]}
  8. 然后重启docker的windows服务,通过GUI重启,或者,在administrator模式的powershell窗口中执行都可以:

    Restart-Service docker -f
  9. 好了,现在我们可以试着pull或者运行一个docker image了,比如:

    docker run microsoft/dotnet-samples:dotnetapp-nanoserver
  10. 应该可以看到,image成功下载、运行,屏幕打印出下面这个小人:

如果没看到,一定不是我的错啦,肯定是你上面的步骤没看仔细,不如再重新看一遍! 8-)

第一篇就到这里,自己试试其他docker命令吧!

下一篇,我会手把手带大家实战一个

原文地址:http://www.cnblogs.com/teddyma/p/Windows-Server-Docker-1.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

老司机实战Windows Server Docker:1 初体验之各种填坑相关推荐

  1. 老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典

    前面两篇(简单运维1.简单运维2)介绍了一些Windows Server Docker相关的基本运维知识.今天这一篇,Windows Server Dockerfile葵花宝典,涵盖了许多典型场景的W ...

  2. 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

    上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...

  3. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  4. 老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

    前言 上一篇老司机实战Windows Server Docker:1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑.这一篇,我们来填一些稍大一些的坑:如何docker化一个现有的iis应 ...

  5. Windows Server 8 Beta 初体验之三 Active Directory

    Windows Server系统,随着版本的升级,很多功能越来越依赖于Active Directory,越来越离不开Active Directory,所以在体验Windows Server 8 Bet ...

  6. Windows Server 8 Beta 初体验之二:Hyper-v

    Windows Server 8 Beta 和以往的Server操作系统比较,最大的变化就是没有了开始菜单,开始菜单由服务器管理器所代替,从操作感受上来讲,以往的Server操作系统基本上由四部分组成 ...

  7. 服务器重装2012,Windows Server 2012安装初体验

    最近微软先行放出发布了下一代Windows服务器版本windows server 2012,笔者下载下来测试安装了,相对于windows server 2008,确实有许多细节方面的改进.我是通过vm ...

  8. 老毛桃还原windows server 2012 R2服务器

    背景 重启了一下windows server 2012 R2,导致无法进入系统. 一直处于重新启动状态,总是出现"你的电脑遇到问题,需要重新启动"的提示. 也无法进入完全模式.无法 ...

  9. 基于Windows Server 2019域环境体验Veeam ONE 10安装

    基于Windows Server 2019域环境体验Veeam ONE 10安装 https://www.charflower.com/?p=1722 2020-02-20 by BOBtm 安装IS ...

最新文章

  1. 用C语言解“BCD解密”问题
  2. sql server 2008手工修改表结构,表不能保存的问题与解决
  3. research paper for management science
  4. 【面试锦囊】14种模式搞定面试算法编程题(1-7)
  5. c++ 特定容器算法(sort,merge,reverse,remove,unique)
  6. openshift学习_在OpenShift上将JMS与JBoss A-MQ结合使用。 学习了有关远程客户端和加密的经验。...
  7. C++ 构造函数 与 析构函数
  8. ht1621b和单片机电平匹配_基于HT1621B段式液晶模块的驱动应用
  9. 技术大佬:我去,你写的 switch 语句也太老土了吧!
  10. 单链表的基本操作---插入,删除,交,并,相邻元素的交换等
  11. python机器学习库sklearn——岭回归(Ridge、RidgeCV)(L2正则化)
  12. 将自己的数据制作成cityscape格式
  13. 分享一个编程学习网站——并发编程网
  14. android适配器
  15. kmeans python interation flag_机器学习经典算法-logistic回归代码详解
  16. reactos操作系统实现(6)
  17. Google Play上架App设置隐私政策声明问题
  18. 一颗病毒大小的新型分子或可帮助人类找到暗物质
  19. vscode远程连接服务器失败的问题
  20. 云服务器能共享文件夹,云服务器能共享文件夹

热门文章

  1. 王彪20162321 2016-2017-2 《程序设计与数据结构》第5周学习总结
  2. php如何读出xml的节点内容 两个例子
  3. Hibernate HQL 语法大全(上)
  4. .NET 6新特性试用 | LINQ功能改进
  5. 如何通过 .NETCore 获取 Linux,Mac 的硬件信息?
  6. Dapr + .NET 实战(七)Secrets
  7. DDD实战课--学习笔记
  8. 理解 redis 中的 哈希对象类型
  9. GraphQL:和EntityFramework更配哦
  10. 2020了,最流行的密码依旧是123456