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

时间:2022-09-18 13:18:03

前言

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/windowsserver2016stefanscherer/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
  1. 安装docker包,问你All/Yes/No,选A:
Install-Package -Name docker -ProviderName DockerMsftProvider
  1. 重启机器

    安装完docker包后,如果你立刻尝试在命令行执行任何docker命令,比如:docker images,会报无法连接服务器错误,原因是,必须重启一下机器。
  2. 重启完机器回来,我们应该已经可以执行比如docker images这样的命令了,不过,有可能你打开一个cmd或者powershell窗口,执行docker images会收到下面的错误,不用慌,那是因为你没有以Adnimistrator模式打开cmd或powershell窗口:
...省略... //./pipe/docker_engine: Access is denied ...省略...
  1. 以administrator模式打开powershell窗口,执行docker images,是不是成功了?小兴奋

    老司机实战Windows Server Docker:1 初体验之各种填坑的更多相关文章

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

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

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

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

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

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

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

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

    5. windows server服务器上mysql远程连接失败的坑

      windows server服务器上mysql远程连接失败的坑 背景:趁这阿里云活动,和朋友合伙买了个服务器,最坑的是没想到他买的是windows Server的,反正便宜,将就着用吧,自己装好了wa ...

    6. Windows Embedded Compact 7初体验

      Windows Embedded Compact 7初体验 Windows Embedded Compact 7已经出来半年多了,一直没时间搞.最近它又出了Refresh的版本,电脑也换了个1T的硬盘 ...

    7. 实战 Windows Server 2012 群集共享卷

      群集共享卷,简单理解就是一个针对Hyper-V优化的一个分布式访问文件系统,群集中的节点可以同时写到一个磁盘,并且是受控访问,以避免写数据的冲突.此功能和Vmware  的VMFS是类似的.此功能从W ...

    8. dubbo实战之一:准备和初体验

      欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

    9. Windows 8.1 RTM初体验

      Windows 8.1正式发布在10月17日,现在可以在MSDN/TechNet进行订阅下载. 操作系统版本号和Windows Server 2012 R2保持一致. 开始屏幕动态磁贴现在有4种尺寸可 ...

    随机推荐

    1. Objective-C学习笔记-第四天(1)

      解决以下昨天遇到的问题 1.@class与import是怎么样的呢?参考:http://www.cnblogs.com/ios8/p/ios-oc-test.html 在头文件中, 一般只需要知道被引 ...

    2. 轻松自动化---selenium-webdriver(python) (五)

      本节要解决的问题: 层级定位 场景: 假如两个控件,他们长的一模样,还都叫“张三”,唯一的不同是一个在北京,一个在上海,那我们就可以通过,他们的城市,区,街道,来找到他们. 在实际的测试中也经常会遇到 ...

    3. 【BZOJ】2659: [Beijing wc2012]算不出的算式

      题意 给两个奇质数\(p, q(p, q < 2^{31})\),求\(\sum_{k=1}^{\frac{p-1}{2}} \left \lfloor \frac{kq}{p} \right ...

    4. 【OpenStack】OpenStack系列15之OpenStack高可用详解

      高可用 概念 级别 陈本 如何实现 分类 Openstack的HA 虚拟机的HA 虚拟机HA 比较 应用级别HA,Heat的HA模板   组件的HA 示意图 Mysql的HA 三种方式之一——主从同步 ...

    5. IoSkipCurrentIrpStackLocation &period;&lpar;转&rpar;

      原文链接:http://m.blog.csdn.net/blog/ruanben/19758769# 当驱动被分层以后,他们被注册到一个chain中,IRP会在这个chain中传递,从最上面,到最下面 ...

    6. 【做题】SDOI2017硬币游戏——方程&概念处理

      原文链接 https://www.cnblogs.com/cly-none/p/9825339.html 题意:给出\(n\)个长度为\(m\)的互不相同的01串.有另一个串,初始为空.不断进行如下操 ...

    7. 工具链接redis

      RedisDesktopManager 链接 文件位置 /usr/loca/redis/etc/redis.conf 一.注释redis.conf文件中的:bind 127.0.0.1(在一段文字之前 ...

    8. C&num; Serializable对象序列化的作用

      http://www.cnblogs.com/linlf03/archive/2011/11/03/2234424.html 1.序列化定义:将对象转换为容易传输的格式的过程.例如,可以序列化一个对象 ...

    9. js正则表达式判断一个字符串是否是正确的有数字和小数点组成的金钱形式和 判读数值类型的正则表达式

      function checkRates(str){    var re = /^(([1-9][0-9]*\.[0-9][0-9]*)|([0]\.[0-9][0-9]*)|([1-9][0-9]*) ...

    10. The Road to learn React书籍学习笔记&lpar;第二章&rpar;

      The Road to learn React书籍学习笔记(第二章) 组件的内部状态 组件的内部状态也称为局部状态,允许保存.修改和删除在组件内部的属性,使用ES6类组件可以在构造函数中初始化组件的状 ...