因爲.net自己就是運行在windows平臺的,因此它與windows容器也是更加適合,你能夠以iis鏡像爲基礎,去編寫你的Dockerfile文件,從而去構建你的.net項目鏡像。linux
docker run --rm mcr.microsoft.com/dotnet/framework/samples:dotnetapp
.net web程序web
docker run -it --rm -p 8000:80 --name aspnet_sample mcr.microsoft.com/dotnet/framework/samples:aspnetapp
FROM microsoft/aspnet ARG source WORKDIR /inetpub/wwwroot COPY ${source:-obj/Docker/publish} .
參考:https://docs.microsoft.com/en-us/aspnet/mvc/overview/deployment/docker-aspnetmvcdocker
對於非.net core的應用程序來講,要想在linux平臺運行須要安裝mono框架,這是在linux平臺運行.net程序的惟一方法,那麼若是想把.net程序部署到linux容器裏,也是同樣的方法過程,你須要構建一個安裝有mono環境的鏡像。windows
FROM mono:latest RUN mono --version WORKDIR /app COPY ./bin/Debug/ . CMD [ "mono", "monoApp.exe" ]
打包鏡像服務器
cd monoapp #Docfile所在目錄,它通常在項目根目錄 docker build . -t monoapp docker run monoapp
執行結果mvc
MacBook-Pro-6:monoApp lind.zhang$ docker run monoapp Hello World! MacBook-Pro-6:monoApp lind.zhang$
製做一個.net web的Dockerfile並運行app
前提:咱們的web項目要想運行,須要有一個像IIS一種的服務器組件,在linux裏咱們通常使用jexus來實現這個功能,也就是說,咱們的docker鏡像應該即有mono還要有jexus的集成,這個鏡像咱們能夠本身寫,也能夠使用現成的鏡像
azraelrabbit/monupw
,下面的Dockerfile是把一個web項目monoMvc打包成一個鏡像。框架
先把鏡像拉到本地網站
docker pull azraelrabbit/monupw
部署的步驟ui
編寫Dockerfile文件
FROM azraelrabbit/monupw EXPOSE 80 WORKDIR /data COPY ./bin/ .
啓動你的容器,對外訪問用8080端口,容器內部是80端口
MacBook-Pro-6:monoMvc lind.zhang$ docker run -p 8080:80 monomvc Starting ... OK