zoukankan      html  css  js  c++  java
  • Docker 在 Windows Server 2016平台下 .Net Core的镜像问题

    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:UsersADMINI~1AppDataLocalTemp2DockerMsftProviderdocker-19-03-1.zip ” 文件。

    解决方法:

    a, 找到配置文件   “C:UsersADMINI~1AppDataLocalTemp2DockerMsftProviderDockerDefault_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

  • 相关阅读:
    Linux:正则表达式2
    Linux:基础命令三
    Linux:正则表达式1
    虚拟机:主机能ping通虚拟机,虚拟机不可以ping通主机
    Linux:安装禅道
    ssh免密钥登录
    CKA-Harbor简单使用
    CKA-docker部署LNMP网站平台
    CKA-构建Nginx、PHP、Tomcat镜像
    CKA-docker卸载以及安装
  • 原文地址:https://www.cnblogs.com/xcj26/p/11412502.html
Copyright © 2011-2022 走看看