Docker学习笔记-磁盘挂载运行.netcore
前言:
环境: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的问题,后来发现并不是
vi Program.cs
加一句这个就可以了
直接浏览器访问 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目录下包含了宿主机上的源码项目。是以共享的形式,而不是宿主机的拷贝,在宿主机上对目录的更改会即时反应到容器中。但反过来,容器中对共享目录的更改不会反应到宿主机上,容器具有隔离特性。