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

前言

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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DOS基础整理

一、操作系统: 1.管理和控制计算机操作系统中的软件和硬件资源 2.合理的组织计算机工作流程 3.以方便用户使用的程序集合 二、操作系统的分类: 1.字符界面————DOS 2.图形界面————windows 三、启动DOS窗口: winR,打…

MySQL find_in_set()函数

转载自 MySQL find_in_set()函数 MySQL FIND_IN_SET函数简介 MySQL提供了一个名为FIND_IN_SET()的内置字符串函数,允许您在逗号分隔的字符串列表中查找指定字符串的位置。 下面说明了FIND_IN_SET()函数的语法。 FIND_IN_SET(needle,haystack);FIND_IN_SET()函数…

.NET Core项目从xproj+project.json向csproj迁移简介

3月7日,微软发布了Visual Studio 2017 RTM,与之一起发布的还有.NET Core Runtime 1.1.0以及.NET Core SDK 1.0.0,尽管这些并不是最新版,但也已经从preview版本升级到了正式版。所以,在安装Visual Studio 2017时如果启用…

马踏棋盘算法(骑士周游)+贪心优化

思路分析 代码实现 package com.atguigu.horse;import java.awt.*; import java.util.ArrayList; import java.util.Comparator;public class HorseChessboard {private static int x;//棋盘的列数private static int y;//棋盘的行数//创建一个数组,标记棋盘的各个…

java 路径 20,java中得到classpath和当前类的绝对路径的一些方法(路径中的%20进行替换空格)...

原网址:http://blog.csdn.net/shendl/article/details/1427475(注意:利用下面方式得到路径,如果路径中有空格字符, 那么会有"%20"进行替换, 所以得到之后再将"%20"替换成空格)下面是一些得到class…

网络相关配置

1.查看网络是否通畅:ipconfig 2.网络:一组相互连接的计算机 特点:多台计算机组成 使用物理线路进行连接 好处:交换数据,资源共享 3.网络的分类: 局域网:局限在小的地里区内和单独的建筑物…

MySQL format()函数

转载自 MySQL format()函数 MySQL FORMAT函数简介 有时,您使用表达式或聚合函数(如AVG)来计算数据库中的值,例如库存周转率,产品的平均价格,平均发票值等。 表达式的结果是十进制数,并带有许多小数位。要格式化这…

马踏棋盘算法(骑士周游)

思路分析 代码实现 package com.atguigu.horse;import java.awt.*; import java.util.ArrayList; import java.util.Comparator;public class HorseChessboard {private static int x;//棋盘的列数private static int y;//棋盘的行数//创建一个数组,标记棋盘的各个…

开源免费的.NET图像即时处理的组件ImageProcessor

承接以前的组件系列,这个组件系列旨在介绍.NET相关的组件,让大家可以在项目中有一个更好的选择,社区对于第三方插件的介绍还是比较少的,很多博文的内容主要还是介绍一些简单的操作(很多人都说博客园现在是“hello worl…

人脸识别活体检测测试案例

最近好多人找我要关于人脸识别活体检测的案例,今天正好有空我就更新一下,先解释一下活体,顾名思义就是看看是否是活人在测检(大白话解说),用技术上的话也就是看看当前操作者是否是在用照片或者其他方法来操…

php 常用的日期函数,常用php日期函数总结

php常用日期函数总结: 包括检查日期格式是否合法,检查时间是否合法时间 ,时间比较函数,返回两个日期相差几秒、几分钟、几小时或几天。function check_date($date) { //检查日期是否合法日期$dateArr explode("-", $da…

MySQL nullif()函数

转载自 MySQL nullif()函数 MySQL NULLIF函数简介 NULLIF函数是接受2个参数的控制流函数之一。如果第一个参数等于第二个参数,则NULLIF函数返回NULL,否则返回第一个参数。 NULLIF函数的语法如下: NULLIF(expression_1,expression_2);如…

2016蓝桥杯省赛---java---B---1(有奖猜谜)

题目描述 思路分析 方案一 直接计算器(有手就行的题) 方案二 package com.kuang.study.lanqiao;import java.util.Scanner;public class Main {public static void main(String[] args) {int x777;String str"vxvxvxvxvxvxvvx";for (int i 0; i < str.length()…

Linux+Nginx+Asp.net Core部署

上篇《Docker基础入门及示例》文章介绍了Docker部署&#xff0c;以及相关.net core 的打包示例。这篇文章我将以oss.offical.site站点为例&#xff0c;主要介绍下在linux机器下完整的部署流程&#xff0c;.net core在docker容器中的运行已经介绍&#xff0c;这里.net core运行环…

php无get报错,php $_get报错怎么办

php去掉字符串最后三个字符<?phpheader (content-type:text/html;charsetutf-8); $str programming;echo "原字符串&#xff1a;{$str}";//定义一个2021-03-11 20:32:46php $_get报错的解决办法&#xff1a;当我们直接访问POST&GET页面时由于并没有传递任何…

com.microsoft.sqlserver.jdbc.SQLServerException: 索引 7 超出范围。

今天在做项目的时候&#xff0c;使用的jdbc底层增加&#xff0c;然后出现了个问题&#xff0c;找了好久没有找出来是什么问题&#xff0c;后来在网上查了下&#xff0c;发现别人都说是&#xff1f;写成了中文的了&#xff0c;于是我就返回来看&#xff0c;没看出来&#xff0c;…

MySQL ifnull()函数

转载自 MySQL ifnull()函数 MySQL IFNULL函数简介 MySQL IFNULL函数是MySQL控制流函数之一&#xff0c;它接受两个参数&#xff0c;如果不是NULL&#xff0c;则返回第一个参数。 否则&#xff0c;IFNULL函数返回第二个参数。 两个参数可以是文字值或表达式。 以下说明了IF…

ps中对齐,历史记录,图层

一、对齐&#xff1a; 1.激活对齐&#xff1a;视图–》对齐 2.新建一个文件&#xff0c;然后置入一张图片&#xff0c;设置一个参考线&#xff0c;使用移动工具进行移动&#xff0c;当移动到参考线附近的时候图片会自己吸到参考线上。 3.移动到参考线的时候如需设置空隙&…

154. 寻找旋转排序数组中的最小值 II(有手就行)

class Solution {public int findMin(int[] nums) {for(int i0;i<nums.length;i){if(nums[i]<nums[0]){return nums[i];}}return nums[0];} }

Docker基础入门及示例

Docker近几年的发展可谓一日千里&#xff0c;特别从是2013年随着一个基于LXC的高级容器引擎开源&#xff0c;到现在&#xff0c;其在linux和windows上都有了很好的支持&#xff0c;并且已经有很多公司将docker用于实际的生产环境部署当中。这篇文章我将针对以下几个方面简单介绍…