.NET Core 在 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上运行,这坑有点深。
- 使用Docker快速部署ELK环境(最新5.5.1版本)
- 在docker环境中制作openstack镜像文件
- Docker学习总结(13)——从零开始搭建Jenkins+Docker自动化集成环境
- 基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署
- centos7搭建docker环境。
- [置顶] Docker实战-分离部署LNMP环境搭建Wordpress个人网站详细配置
- 无网络环境下使用docker加载镜像
- 再用五分钟利用docker升级搭建好php7.0.10服务环境(添加扩展mysql、gd、phalcon)
- 基于docker的caffe环境搭建与使用示例
- 一路踩坑:Centos7环境下Docker搭建私有registry
- 使用 Docker 搭建 JavaWeb环境(Tomcat,jdk)
- docker(3):配置rancher网络环境,下载启动tomcat容器
- Jenkins+Docker搭建持续集成测试环境
- Docker:搭建开发环境(运行Eclipse等图形化界面程序)
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
- 在Mac平台使用Docker搭建AOSP(Android源代码)编译环境
- 【fabric实战指南-环境准备】fabric1.0安装过程中需要用到的docker命令
- Docker学习<一>--初体验Windows环境下安装
- Docker环境下的前后端分离项目部署与运维 前后端分离部署运维学习视频教程(最新最全)
- Docker环境下使用SpringBootAdmin2.x教程