windows docker上无脑运行net core

Posted zym2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows docker上无脑运行net core相关的知识,希望对你有一定的参考价值。

最近有人在问,怎么在本地的docker中运行.net core  。下面我就简单来个示例:

先决条件:windows docker desktop,怎么配置,看我以前的博客

还是无脑操作 ,net core6做示例:

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env 
WORKDIR /app  
#通常这里只需要启动项目即可
COPY *.csproj ./ 
//nuget
RUN dotnet restore 

# 复制整个项目并生成发布包

COPY . ./
#Release OR Debug 都可以,忽略out 
RUN dotnet publish -c Release -o out 

# 使用 ASP.NET Core 运行时作为基础镜像 
FROM mcr.microsoft.com/dotnet/aspnet:6.0

WORKDIR /app 
#可忽略out COPY
--from=build-env /app/out . # 暴露 12345端口并启动应用程序 EXPOSE 12345 ENTRYPOINT ["dotnet", "myapp.dll"]

构建完dockerfile之后, 执行命令:

 docker build -t netcore6:latest .

注意:

如果是本地测试,则不用那么麻烦,IDE -BUILD(快)之后,可忽略此镜像FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
 如果是WSL,则更简单了 ,有需求私信
 

六.docker网络模式

一.网络模式

  1. --net=bridge 默认
    2.--net=host
    docker run -it busybox 默认运行 生成独立网络命令空间
    docker run -it --net=host busybox --net=host 与宿主机一同使用网络命令空间,其他隔离
    在容器内使用端口相当于占用宿主机的端口;
    3.--net=none
    Docker run -it --net=none 网络独立,但每配置任何地址
    4.--net=container:name

    docker exec -it bs sh 运行一般容器

    netstat -nltp
    docker run -itd --name nginx05 --net=container:bs nginx

    netstat -nltp

    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
    具备同样的网络信息,容器除外,其他都是隔离;
    5.自定义网络
    与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信

    docker network create bs-test 创建网络bs-test

    docker run -it --name bs4 --net bs-test busybox
    docker run -it --name bs3 --net bs-test busybox
    然后互ping可以通信;主机名也可以通信; link通信

二.容器网络访问原理
技术图片
技术图片
Docker 宿主机与容器之间通信用的iptables的snat和dnat
从容器数据到主机的数据通过docker0网桥配置iptable snat到主机网卡。
从主机网卡到容器数据是通过docker0网桥配置iptables Dnat到容器网卡。

以上是关于windows docker上无脑运行net core的主要内容,如果未能解决你的问题,请参考以下文章

原无脑操作:Windows下搭建Kafka运行环境

六.docker网络模式

ASP.NET Core 3.1 Angular Web App 在 Windows 上构建和运行,但在 Mac OSX 和 Docker 上失败

如何在 Windows 上无错误地 npm i ssh2?

将.net framework 4 部署在docker中的全过程(支持4.0 到 4.8,3.5应该也可以)

LCOW —— 单一Docker引擎下可同时运行Linux和Windows容器啦!