zoukankan      html  css  js  c++  java
  • 关于windows使用docker的总结

    近日,公司余总让我思考Linux部署.net core应用程序的方案,同时余总提出了使用docker方式部署的方式,很多年前曾接触过Docker,但是没有深入研究,而近日的需求让我不得不再次重拾Docker知识,于是就通过网上查阅相关资料进行学习。

    我们公司的情况和很多互联网公司不一样,我们做的是政府项目,出于安全考虑客户那边是不允许连接互联网的,因此我们的部署必须要考虑局域网的部署。于是大概的思路就是:

    1. 下载离线版的CentOS系统,下载离线版Docker,在客户服务器安装CentOS系统和Docker。
    2. 在公司制作发布的镜像(Image),然后导出为tar文件(使用save命令)
    3. 到客户环境将导出的tar文件镜像通过load命令导入镜像

    一、发布到本机Docker

    上面是整体的思路,我这边使用的是windows方案,首先需要下载Docker Desktop for windows,下载地址:https://docs.docker.com/docker-for-windows/install/。然后双击安装包进行安装,如果安装不成功,会有提示信息的,该程序就是利用windows的hyper-v虚拟机在实现docker。安装成功后在dos窗体中输入docker --version验证是否安装成功。

     此时我们需要使用到部分docker命令如下:

    docker images #查看所有的镜像
    docker ps -a #查控所有的容器
    docker rm -f 容器名/容器id #删除容器
    docker rmi 镜像名/镜像id #删除镜像
    docker pull nginx:last #拉取镜像
    docker search nginx #查询镜像
    docker history XXXXXXX #查看docker的历史楼层
    docker exec -it 5d8ac43f358a /bin/bash #进入容器
    docker run --name duanjt-netcore-mvc2 -d -p 7077:80 core-mvc #运行容器

    此时我参考了文章:https://www.cnblogs.com/chengtian/p/11832955.html ,通过VS2019创建.net core项目,然后发布该项目为文件(千万不要有中文路径),最后在发布目录下创建DockerFile文件,DockerFile的内容如下:

    #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
    
    #Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
    #For more information, please see https://aka.ms/containercompat
    
    FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    COPY . /app
    ENTRYPOINT ["dotnet", "WebApplication1.dll"]

    DockerFile的意思是:继承 mcr.microsoft.com/dotnet/aspnet:3.1容器,向外暴露80和443端口,工作目录是/app,也就是说进入容器的默认目录是/app,COPY表示将当前目录拷贝到容器的/app目录下,

    ENTRYPOINT和RUN命令含义差不多,但是RUN可以被覆盖,而ENTRYPOINT不允许被覆盖,ENTRYPOINT表示容器启动后执行的命令。

    然后在DockerFile目录下执行编译镜像的命令:docker build -t core-mvc .

     core-mvc表示镜像的名称,最后的点(.)表示DockerFile文件所在目录为当前目录。

    此时我们查看镜像如下:

     此时我们就可以运行容器了,命令如下:docker run --name duanjt-mvc -d -p 7077:80 core-mvc

     我们可以看到,容器名称为duanjt-mvc的容器已经启动成功了,此时我们在浏览器输入:http://127.0.0.1:7077/WeatherForecast

     ok,至此,我们的.net core程序就已经完美发布到docker中了

    二、导出镜像

    上一步我们已经做好了镜像,然后需要导出来,导出参考了文章:https://www.cnblogs.com/zhuochong/p/10064350.html,执行如下命令:docker save -o duanjt-mvc.tar core-mvc:latest,执行命令后,在当前dos所在目录下会产生duanjt-mvc.tar这样的文件就是我们导出的镜像。

     

     三、导入镜像

    上一步骤我们已经导出了镜像,就可以将镜像拷贝到客户单位服务器上面去,然后导入镜像,执行命令如下:docker load -i duanjt-mvc.tar 

     我们可以看到,镜像已经导入进来了,后面的操作就没有任何区别了。

  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/duanjt/p/14674594.html
Copyright © 2011-2022 走看看