net core docker

1.如果使用运行目录挂载模式,那么需要在run时使用 entrypoint指定 dotnet 和 [projectname].dll,如果不加则容器运行不起来,asp.net的程序则不需要这个。注意格式不能错,

     docker run -d --name mymvc -e "ASPNETCORE_ENVIRONMENT=Development" -w "c:/app" -v "D:\mymvc\publish:c:/app" -p 5000:80 --entrypoint dotnet  microsoft/dotnet:2.2-sdk-nanoserver-1803 mymvc.dll

 

    docker build --t con_pxsesid_api:1.x .
    docker run --name con_pxsesid_api_1 -p 533x:80 -d con_pxsesid_api:镜像版本号 

 

   mac下 主要是路径的不同

    docker run -d --name mt-debug --privileged=true --restart=always -e "ASPNETCORE_ENVIRONMENT=Development" -w "/app" -v "/Users/Documents/docker_run/mt-core-2:/app" -p 5005:80 --entrypoint dotnet mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim mt.core.dll

 

      ASPNETCORE_ENVIRONMENT可以不需要,这是为了方便调试使用。

     除了dotnet 其他执行程序要放到 镜像后面。网上还真没查到,最后是看vs2017再使用docker调试模式时生成的docker run的格式调整而来。如果不是必须挂在模式,建议就使用打包模式,这样dockerfile更方便。

2.如果要把应用程序打包到镜像则使用build 和run配合来使用。

3.nat模式下,容器重启会导致IP变化,如果run时希望绑定IP则可以使用 docker run --ip ***.***.***.*** 。IP段可以不和Nat网关的IP段一致。但是注意,如果该Nat的subnet和gateway是空着的话,则不能指定固定IP。为空则通常是由于安装docker不完整导致(目前看来是)。查看network可以使用如下命令  docker network ls   , docker network inspect [network id]

 

4.关于端口占用的问题。

 大多数时候端口被占用后容器是启动不了的,但是有时候至少我发现端口被占用容器还能启动,而且浏览器访问还打不开,例如 localhost:5003,就打不开页面。

  mac模式下:

   sudo lsof -i tcp:5005   查找端口

   sudo kill 14459  清除端口占用的进程 14459是进程id

 

5.发布之前可以 通过命令行运行下看看情况

   现切换到应用到根目录 dotnet mt.core.dll

posted @ 2019-01-29 14:44  bournexl  阅读(166)  评论(0编辑  收藏  举报