1. 程式人生 > >Docker + .NET Core(二)

Docker + .NET Core(二)

原文: Docker + .NET Core(二)

前言:

環境:centos7.5 64 位

正文:

首先我們在宿主機上安裝 .NET Core SDK

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.2

安裝好之後,建立一個 .NET Core MVC的專案:

cd $HOME
mkdir demo
cd demo
#建立一個HelloDocker.Web的MVC專案
dotnet new mvc -n HelloDocker.Web
cd HelloDocker.Web
dotnet run

這個時候可能會報錯,我一開始以為是IPV6的問題,後來發現並不是

avatar

vi Program.cs

加一句這個就可以了

avatar

直接瀏覽器訪問 http://IP:5000

然後關掉
這時訪問不了 http://IP:5000

掛載到容器中

# `\`結合`Enter`鍵構成換行符,可以換行輸入一個長命令。
#-it以互動模式(進入容器內部)
#-p引數埠對映
#-v引數掛載宿主機的檔案到容器的指定目錄 $HOME/demo/HelloDocker.Web資料夾下的檔案掛載到容器的\app目錄下。

docker run -it \
-p 5000:5000 \
-v $HOME/demo/HelloDocker.Web:/app \
microsoft/dotnet:latest

這一步可能會出錯

WARNING: IPv4 forwarding is disabled

啟用IPV4 IP的轉發:

檢查當前值:

/sbin/sysctl net.ipv4.conf.all.forwarding

啟用設定:

/sbin/sysctl -w net.ipv4.conf.all.forwarding=1

檢查輸出docker info:

docker info

再重新執行上面的長命令,不報錯,已經進入容器內

cd app
dotnet run

瀏覽器訪問 http://IP:5000

成功

容器內部中的app目錄下包含了宿主機上的原始碼專案。是以共享的形式,而不是宿主機的拷貝,在宿主機上對目錄的更改會即時反應到容器中。但反過來,容器中對共享目錄的更改不會反應到宿主機上,容器具有隔離特性。