2017年年初,docker公司将原先的docker项目改名为moby,并创建了docker-ce和docker-ee。

这三者的关系是:

moby是继承了原先的docker的项目,是社区维护的的开源项目,谁都可以在moby的基础打造自己的容器产品。

docker-ce是docker公司维护的开源项目,是一个基于moby项目的免费的容器产品 。

docker-ee是docker公司维护的闭源产品,是docker公司的商业产品。

一,Docker 的安装

Windows 安装  Docker 官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/quick-start/quick-start-windows-server

Docker 在不同Windows版本的系统上安装,安装方法是有差异的。

1,在Win10 的安装

在 Docker 官方网站 上注册一个账号,下载程序进行安装就可以了,整个过程只有两步,比较简单。

2,在Windows Server 2016操作系统上

Windows Server 版本,只能安装Docker EE版本。

a,在安装Docker之前,更新操作系统的所有补丁,具体操作方法如下:

在CMD窗口,或者Powershell窗口输入  sconfig 命令,弹出如下窗口:

选择 【6】,再选择【A】,对操作系统的所有补丁进行更新

b,然后,进入PowerShell窗口,安装  Nuget

Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force #指定Nuget安装包最小版本

c, 进入PowerShell窗口,用命令行安装 Docker  (摘自:https://q.cnblogs.com/q/104529/

Install-Module DockerProvider -Force

Install-Package Docker -ProviderName DockerProvider -Force

或者

Install-Module -Name DockerMsftProvider -Force #安装docker模块

Install-Package -Name docker -ProviderName DockerMsftProvider -Force #安装docker包

d,重新启动电脑

Restart-Computer -Force #重新启动

备注:在安装的过程,会出现一个意外,找不到 “ C:\Users\ADMINI~1\AppData\Local\Temp\2\DockerMsftProvider\docker-19-03-1.zip ” 文件。

解决方法:

a, 找到配置文件   “C:\Users\ADMINI~1\AppData\Local\Temp\2\DockerMsftProvider\DockerDefault_DockerSearchIndex.json”  ,查找缺失文件对应的网络路径,把文件下载到本地。

c, 执行更新命令

Find-Package – ProviderName DockerMsftProvider | Install-Package -Verbose

安装完成后,可以通过 docker version命令查看相关版本信息 。

二,Docker 制作镜像文件

1,制作一个镜像文件:

docker build -t dockerdemo03 .         # 这个命令的后边,一定要有一个圆点

b,根据一个镜像文件,运行一个容器

docker run -d -p 9990:80 dockerdemo03

容器运行成功后,可以通过如下IP进行访问:

http://10.0.75.1:9990/api/values
 
c,也可以通过配置路由规则的方式,用本机IP访问:
#route print 192.168.11.89
route -p add 192.168.11.89 MASK 255.255.255.240 10.0.75.1
#route delete 192.168.11.89

http://192.168.11.89:9990/api/values

不小心,删除了默认的路由规则,可以用如下命令恢复本机电脑的默认路由:
方式一:
netsh int ipv4 reset

方法二(摘自:https://www.cnblogs.com/KeenLeung/p/3511233.html):

netsh winsock reset catalog
netsh int ip reset reset.log hit

重启电脑后生效。

备注:

一些基本Docker操作命令

docker images                      查看镜像文件
docker ps -a 查看所有容器的运行记录,以异常方式退出的容器将具有非零状态代码
docker ps 查看正在运行的容器
docker stop <container-id> 停止某个容器
docker kill <container-id> 杀掉某个容器
docker rm <container-id> 删除某个容器
docker rmi <image-id> 删除某个镜像

三,docker 镜像的 PUSH,PULL(深坑)

现在,现在我要把这个镜像文件发布到服务,我的思路是:先把镜像文件 PUSH 到Docker的仓库,再到服务器上把这个镜像文件拉取下来。

1,把镜像文件PUSH到仓库:

用自己注册的账号登录到Docker

把镜像文件推送到仓库

#给镜像文件取一个别名
docker tag bbbf62ce2eaf xcj26/webapp22
#把镜像文件推送到仓库
docker push xcj26/webapp22 

推送成功。

2,服务器PULL 镜像文件:

进入到服务器(Window Server 2016)的Docker ,登录并拉取刚才PUSH的镜像文件:

docker pull xcj26/webapp22  #拉取镜像文件

错误信息提示为:

a Windows version 10.0.17134-based image is incompatible with a 10.0.14393 host

显示操作系统的版本不兼容

=====换个思路=====

我把本地的程序发布成本地文件,然后拷贝到服务器,再创建 Dockerfile 生成镜像文件。

也是同样的问题

a Windows version 10.0.17134-based image is incompatible with a 10.0.14393 host

查阅了很多资料,最有用的就是如下这两个信息:

stackoverflow:https://stackoverflow.com/questions/54229367/dockers-image-and-host-are-incompatible

windows 容器的兼容性:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility

大致意思是 基础镜像库(FROM mcr.microsoft.com/dotnet/core/aspnet:2.1-nanoserver-1803 AS base)不支持在Windows Server 2016(10.0.14393) 服务器上运行。 但是支持在Win 10(10.为。17134)电脑上运行。

在Win 10电脑上用Docker环境上开发一个程序,而不能在自家的服务器Window Server 2016上运行。

补充:

https://hub.docker.com/_/microsoft-dotnet-core-aspnet/

docker pull mcr.microsoft.com/windows/servercore:1903 
no matching manifest for windows/amd64 10.0.14393 in the manifest list entries

docker pull mcr.microsoft.com/windows/servercore:1803
no matching manifest for windows/amd64 10.0.14393 in the manifest list entries

docker pull microsoft/windowsservercore
docker pull nanoserver/iis

.net core 在 Docker 开发下的巨坑的更多相关文章

  1. 初试stm32嵌入式开发遇到的巨坑

    开发板使用的是st官方的stm32F207ZG nucleo,遇到的问题是在keil中报错: no target connected 到网上找答案,都是说gpio口的问题,让按着reset键改debu ...

  2. .NET Core多平台开发体验[4]: Docker

    对于一个 .NET开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级到下一代. ...

  3. Visual Studio Code和Docker开发asp.net core和mysql应用

    Visual Studio Code和Docker开发asp.net core和mysql应用 .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对 ...

  4. 通过几个Hello World感受.NET Core全新的开发体验

    2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布.我个人将.NET Core的核心特性归结为三点,它们的首字母组成一个非常好记的简称——COM ...

  5. 基于Microsoft Azure、ASP.NET Core和Docker的博客系统

    欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统   2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...

  6. NET Core全新的开发体验

    NET Core全新的开发体验 2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布.我个人将.NET Core的核心特性归结为三点,它们的首字母 ...

  7. .NET Core多平台开发体验[1]: Windows

    微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...

  8. .NET Core多平台开发体验[2]: Mac OS X

    除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验 ...

  9. .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)

    如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...

随机推荐

  1. 「PowerBI」Tabular Editor 一个对中文世界很严重的bug即将修复完成

    之前介绍过Tabular Editor这款开源工具,对PowerBI建模来说,非常好用,可以极大的增强自动化水平. 详细可查看此文章: 「PowerBI相关」一款极其优秀的DAX建模工具Tabular ...

  2. 解决 mysql多表联合查询时出现的分页问题

    mysql一对多分页问题 部门表:tbl_dept 员工表:tbl_emp 数据库sql文件 CREATE DATABASE /*!32312 IF NOT EXISTS*/`ssm-crud` /* ...

  3. 《VR入门系列教程》之3---运动追踪与输入设备

    运动追踪设备    第二种可以使人脑相信它真实处于虚拟世界的关键技术就是运动追踪技术,它可以通过追踪头部的运动状态实时更新渲染的场景.这与我们在真实世界中观看周围非常类似.    高速的惯性测量单元( ...

  4. PHP与ECMAScript_1_变量与常量

    PHP ECMAScript 变量命名规则 (相同点) 变量包含:字母.数字.下划线字符 变量只能以字母或下划线开头 变量不能以数字开头 变量名是区分大小写 变量包含:字母.数字.下划线字符 变量只能 ...

  5. 前端插件之Select2使用

    工欲善其事,必先利其器 本系列文章介绍我在运维系统开发过程中用到的那些顺手的前端插件,上一篇文章介绍了bootstrap-duallistbox这个插件的使用,这一篇开始Select2的征服之旅 Se ...

  6. threeJS创建mesh,创建平面,设置mesh的平移,旋转、缩放、自传、透明度、拉伸

    这个小案例是当初我在学习的时候,小的一个小案例,代码还需要进一步优化:还请谅解~~:主要用到了threeJS创建mesh,创建平面,设置mesh的平移,旋转.缩放.自传.透明度.拉伸等这些小功能: 采 ...

  7. IIS网站服务器性能优化攻略

    Windows Server自带的互联网信息服务器(Internet Information Server,IIS)是架设网站服务器的常用工具,它是一个既简单而又麻烦的东西,新手都可以使用IIS架设一 ...

  8. 【iOS】获取项目名和版本号

    iOS 开发中,有时候需要获取项目名和版本号,示例代码如下: -(void)getProjectNameAndVersion{ appName = [[[NSBundle mainBundle] in ...

  9. PHP验证身份证格式

    互联网公司对身份证验证的需求越来越多,然而普通的小公司是无法对接公安部门的身份认证系统的.几乎都是在网上买一些大的互联网公司的一些认证服务.即使是便宜一些的认证价格也达到了10万次/万元.也就是一角钱 ...

  10. druid0.15.0安装方式

    Druid0.15.0安装文档 1 集群规划 Master包含Coordinator和Overlord,4核16G*2: data包含Historical和MiddleManager,16核64G*3 ...