windows 容器方案

作者: ChainZhang | 来源:发表于2018-09-24 14:01 被阅读29次

    1. Windows Container 运行时

    Windows Container提供2种运行时:Window Server ContianerHyper-V Container

    其中,Windows Server Container 与Linux Contianer容器模型一致,容器与底层操作系统共享内核,所以它们会很轻量而且运行迅速。当你在容器中启动一个进程的时候,这个进程实际上运行在宿主机上,可以使用任务管理器或者Powershell 命令 Get-Process 获取到这个进程的信息。

    Hyper-V Contianer则是一种全新的容器运行时模型,它将在宿主机上启动一个很小的虚拟机,所以容器将具备自己独立的操作系统内核。当你在Hyper-V Container中启动进程的时候,宿主机对这个进程是无感知的。Hyper-V Container提供了更好的隔离性,而且这个虚拟机被裁减得非常小,所以性能仍然会不错。

    在Windows Server 2016上,你可以在2种不同的运行时之间选择;而Windows 10上虽然也提供了容器服务,但是只能运行Hyper-V Contianer。

    Windows Container

    2. Docker for Windows

    2.1. windows 10

    windows 10 可安装Docker-CE,Docker Community Edition for Windows

    2.2. WIN SERVER 2016

    WIN SERVER 2016 可安装docker-EE
    win server 2016可以通过以下命令安装docker-ee

    Install-Module DockerMsftProvider -Force
    Install-Package Docker -ProviderName DockerMsftProvider -Force
    

    上述命令执行完成之后,需要使用以下命令检查一下是否需要重启系统。

    (Install-WindowsFeature Containers).RestartNeeded
    

    如果需要重启的话,可执行以下命令重启系统

    Restart-Computer
    

    其他

    windows 其他的老版本的系统可通过Docker Toolbox下载安装

    Docker Toolbox 下载链接

    3. .net core 2.1 docker 运行

    3.1. 环境

    服务器:win server2016 Docker-EE
    开发环境:Windows 10 专业版
    .net core: 2.1.402

    开发环境搭建

    下载并按照.net core sdk在开发机器上:.net core SDK下载地址

    按照完成后可执行以下命令查看dotnet版本:

    dotnet --version
    

    服务器环境搭建

    在win server2016中按照上节方法按照Docker-EE即可

    3.2. Demo

    在已搭建好的开发机上找一个自己喜欢的路径,执行以下命令创建webapi项目:

    dotnet new webapi -o DockerWebApi
    

    项目创建成功之后,稍作一些改动。

    修改端口

    这里修改一下默认端口,使用http协议,8000端口。相关文件路径.\DockerWebApi\Program.cs,增加下图中红框内代码指定端口

    修改端口

    api修改

    然后再改一下默认的接口返回吧,路径.\DockerWebApi\Controllers\ValuesController.cs,将接口返回稍作改动一下

    api修改

    运行

    完成以上改动以后,可以DockerWebApi目录下在执行以下命令运行看下效果

    dotnet run
    
    dotnet run
    结果

    从图中可以看出一切正常

    打包镜像

    打包镜像之前,需要在DockerWebApi目录下在执行以下命令发布程序:

    dotnet publish
    
    dotnet publish

    发布后的路径在ockerWebApi\bin\Debug\netcoreapp2.1目录下,然后在该目录下创建Dockerfile文件,且内容如下:

    # 基于microsoft/dotnet:latest构建Docker Image
    FROM microsoft/dotnet:latest
     
    # 创建DockerWebAPI目录
    RUN mkdir /usr/local/src/DockerWebApi
     
    # 设置工作路径
    WORKDIR /usr/local/src/DockerWebApi
     
    # 将当前文件夹下的所有文件全部复制到工作目录
    COPY *.* ./
     
    # 向外界暴露8000端口
    EXPOSE 8000
     
    # 执行dotnet DockerWebAPI.dll命令
    CMD ["dotnet", "DockerWebApi.dll"]
    

    编写完成Dockerfile之后,就可以打包镜像了,命令如下:

    docker build -t net_demo:1.0.0 .
    

    启动容器

    将上一步打包好的镜像放到服务器的docker内,然后执行以下命令运行容器:

    docker run -d -p 80:8000 --name net_demo net_demo:1.0.0
    
    docker run
    运行结果

    可以通过http://101.132.145.15/api/values访问我的接口

    相关文章

      网友评论

        本文标题:windows 容器方案

        本文链接:https://www.haomeiwen.com/subject/gnncoftx.html