.net core 在 Docker 开发下的巨坑
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进行访问:
#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 开发下的巨坑的更多相关文章
- 初试stm32嵌入式开发遇到的巨坑
开发板使用的是st官方的stm32F207ZG nucleo,遇到的问题是在keil中报错: no target connected 到网上找答案,都是说gpio口的问题,让按着reset键改debu ...
- .NET Core多平台开发体验[4]: Docker
对于一个 .NET开发人员,你可能没有使用过Docker,但是你不可能没有听说过Docker.Docker是Github上最受欢迎的开源项目之一,它号称要成为所有云应用的基石,并把互联网升级到下一代. ...
- Visual Studio Code和Docker开发asp.net core和mysql应用
Visual Studio Code和Docker开发asp.net core和mysql应用 .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对 ...
- 通过几个Hello World感受.NET Core全新的开发体验
2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布.我个人将.NET Core的核心特性归结为三点,它们的首字母组成一个非常好记的简称——COM ...
- 基于Microsoft Azure、ASP.NET Core和Docker的博客系统
欢迎阅读daxnet的新博客:一个基于Microsoft Azure.ASP.NET Core和Docker的博客系统 2008年11月,我在博客园开通了个人帐号,并在博客园发表了自己的第一篇博客 ...
- NET Core全新的开发体验
NET Core全新的开发体验 2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布.我个人将.NET Core的核心特性归结为三点,它们的首字母 ...
- .NET Core多平台开发体验[1]: Windows
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- .NET Core多平台开发体验[2]: Mac OS X
除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux(RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE等)都提供了很好的支持,我们先来体验 ...
- .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)
如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...
随机推荐
- 踩坑 Spring Cloud Hystrix 线程池队列配置
背景: 有一次在生产环境,突然出现了很多笔还款单被挂起,后来排查原因,发现是内部系统调用时出现了Hystrix调用异常.在开发过程中,因为核心线程数设置的比较大,没有出现这种异常.放到了测试环境,偶尔 ...
- [LeetCode] 107 Binary Tree Level Order Traversal II (easy)
原题 层序遍历,从自底向上按层输出. 左→右→中 解法一 : DFS,求出自顶向下的,最后返回时反转一下. class Solution { public: vector<vector<i ...
- 前端响应式のmedia文件分离
响应式cssのmedia文件分离 media简介 1.媒体查询,添加自CSS3 2.一个媒体查询由一个可选的媒体类型和零个或多个使用媒体功能的限制了样式表范围的表达式组成,允许内容的呈现针对一个特定范 ...
- 自动化部署方案CICD
自动化部署方案 由于来来也的时间不久,可能对现有的部署情况不是很了解,以下是个人对POC自动化部署的设计方案. 自动化部署优点 降低成本,提高生产力,高可用,更可靠,性能优化 与gitlab持 ...
- 【TensorFlow 1】操作变量
打印 在tf中直接打印只是输出变量格式,如: #代码 data1 = tf.constant(2,dtype=tf.int32) #浮点数据 data2 = tf.Variable(10,name=' ...
- JAVA 基于TCP协议的一对一,一对多文件传输实现
最近老师给我们上了多线程和TCP和UDP协议,其中一个要求就是我们用JAVA协议一个基于TCP和UDP这两种协议的一对一文件上传和一对多文件上传. 然后我就开始分析TCP和UDP这两个协议的特点,发现 ...
- TypeError: unbound method
调用类报错,具体如下 TypeError: unbound method submit() must be called with jinjin instance as first argument ...
- 【原创】HashMap复习精讲
引言 由于近期忙着搬家,又偷懒了几个礼拜! 其实我很早以前就想写一篇关于HashMap的面试专题.对于JAVA求职者来说,HashMap可谓是集合类的重中之重,甚至你在复习的时候,其他集合类都不用看, ...
- Usaco Training [2.1] The Castle 搜索
传送门 题目的输出的4个信息 前两个很容易,dfs,bfs都可以,图怎么建都可以 后两个在搜索的时候记录belong[i][j]和已有的size即可 代码应该比不少题解清晰吧 #include < ...
- centos虚拟机配置静态ip
昨天在配置虚拟机的时候因为之前没有设置静态IP,而是使用DHCP动态分配的,导致关机后下次开机虚拟机的ip是随机变动的.严重影响了工作体验啊,遂设置静态ip以保全! 虚拟机使用的是CentOS6.5, ...