ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.net core 在 Docker 开发下的巨坑

2019-08-26 14:51:18  阅读:246  来源: 互联网

标签:core 10.0 Windows 镜像文件 Docker net 安装 docker


一,Docker 的安装

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

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

1,在Win10 的安装

在 官方网站 上注册一个账号,下载程序进行安装就可以了,整个安装过程绝比安装一个QQ要简单很多。

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 版本相关信息。

二,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上运行,感觉这坑不是一般的大。

 

标签:core,10.0,Windows,镜像文件,Docker,net,安装,docker
来源: https://www.cnblogs.com/xcj26/p/11412502.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有