Ubuntu docker搭建.net core网站

Ubuntu docker搭建.net core网站

环境:
部署的Linux机器版本为ubuntu-18.04-desktop-amd64.iso

安装:
sdk的安装可以省略,毕竟要是用docker的话,外边是不需要有啥特殊环境的。
我是为了方便玩,放上来的。

首先要Install .NET Core SDK on Linux Ubuntu 18.04 x64
Register Microsoft key and feed
Before installing .NET, you’ll need to register the Microsoft key, register the product repository, and install required dependencies. This only needs to be done once per machine.

Open a command prompt and run the following commands:

wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Install .NET SDK
Update the products available for installation, then install the .NET SDK.

In your command prompt, run the following commands:

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.1

安装完成之后便可以使用.net core了。
使用命令dotnet new mvc -o cc01建立一个新的mvc网站,可以在Program.cs中配置public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup()
.UseUrls(“http://*:5000/”)
.Build();
host.Run();
}
实现允许外部ip访问。
使用dotnet run 来运行网站,如图为外部ip访问。
Ubuntu docker搭建.net core网站
安装docker:
apt-get install docker

部署:
下面介绍如何将网站部署到docker中
$ DOCKER_OPTS="–registry-mirror=https://registry.docker-cn.com"
为设置docker的源为官方原版镜像源,但个人感觉速度较慢,建议修改。
$ DOCKER_OPTS="–registry-mirror=https://reg-mirror.qiniu.com/"
之后重启服务
重新启动服务。
$ sudo service docker restart

设置完成更新源后我们需要拉取microsoft/dotnet镜像
sudo docker pull microsoft/dotnet
Ubuntu docker搭建.net core网站
拉取完成
Ubuntu docker搭建.net core网站
查看已有的镜像
docker images
Ubuntu docker搭建.net core网站
可以看到我们已经成功拉取到镜像文件了,大小为1.73GB

下面我们利用这个镜像创建一个新的容器,执行命令:
sudo docker run -it microsoft/dotnet
Ubuntu docker搭建.net core网站
可见我们安装的已经是dotnet的最新版本2.1.403了
而且我们现在已经处于容器:ff6ae84169dc中了,由[email protected]:/#可见。

退出容器
exit
Ubuntu docker搭建.net core网站

我们需要创建自己网站的容器,不需要这个容器,此容器只为检验我们安装好了而已
所以使用下面命令删除所有容器
docker rm $(docker ps -a -q)
Ubuntu docker搭建.net core网站
可见容器已经删除了

一般来说我们是在windows下来开发网站的,使用Linux来运行网站,Linux的较简单一些,所以我们此处实验将windows上开发的.net core网站运行在Linux的docker上。

首先要将windows上的网站发布一下

我自己建立了一个mvc网站,修改了Index.cshtml,删除了原来的界面代码,改成了我的一个游戏。注意需要修改Program.cs来设置开放的端口。
//CreateWebHostBuilder(args).Build().Run();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup()
.UseUrls(“http://*:5000”)
.Build();

        host.Run();

Ubuntu docker搭建.net core网站

Ubuntu docker搭建.net core网站
Ubuntu docker搭建.net core网站
接下来我们需要发布一下
Ubuntu docker搭建.net core网站
Ubuntu docker搭建.net core网站
接下来把发布的publish文件夹拷贝到ubuntu中
Ubuntu docker搭建.net core网站
不知道为什么docker文件夹是上锁的,我们就先拷贝到外面吧,让后用命令剪切过去。
Ubuntu docker搭建.net core网站
接着在docker文件下,建立Dockerfile文本文件
内容如下:
FROM microsoft/dotnet
WORKDIR /publish
COPY ./publish /publish
EXPOSE 5000
CMD [“dotnet”, “Web01.dll”]
Ubuntu docker搭建.net core网站
DockerFile有点想一个批处理文件
docker会根据这个文件的描述来建立你所需要的容器
FROM为使用的镜像,此次我们使用的是microsoft/dotnet
WORKDIR为容器中我们的工作目录
COPY为了将我们的./publish文件复制到容器中的工作目录/publish中
EXPOSE为容器暴露出来的端口
CMD为运行命令,使用dotnet,运行Web01.dll

之后建立我们的容器
sudo docker build -t mycore .
Ubuntu docker搭建.net core网站
此时可以看到docker根据我们Dockerfile的设置完成了里面的5行设置。创建出了一个mycore镜像,这个镜像里面包含了我们的pulish文件,开放了端口5000,根据这个镜像,我们其实可以创建很多不同的容器。
Ubuntu docker搭建.net core网站
接下来我们运行这个镜像来创建我们需要的容器,将容器里面暴露出来的5000端口,映射到外面的8080端口,使用mycore这个刚刚创建的镜像,来创建一个容器并启动:
sudo docker run -p 8080:5000 --name mycore1 mycore
Ubuntu docker搭建.net core网站
可以看到我们容器跑起来了。并且我们也可以访问了。
Ubuntu docker搭建.net core网站
End

Docker 容器镜像删除
1.停止所有的container,这样才能够删除其中的images:

docker stop $(docker ps -a -q)

如果想要删除所有container的话再加一个指令:

docker rm $(docker ps -a -q)

2.查看当前有些什么images

docker images

3.删除images,通过image的id来指定删除谁

docker rmi Ubuntu docker搭建.net core网站

想要删除untagged images,也就是那些id为的image的话可以用

docker rmi $(docker images | grep “^” | awk “{print $3}”)

要删除全部image的话

docker rmi $(docker images -q)

主要命令汇总:

docker rm $(docker ps -a -q)
docker rmi $(docker images -q)

sudo docker pull microsoft/dotnet
sudo docker run -it microsoft/dotnet

sudo docker build -t mycore .
sudo docker run -p 8080:5000 --name mycore1 mycore

感谢下列文章作者!!
参考文章:
https://www.cnblogs.com/du-blog/p/7868463.html
https://www.cnblogs.com/q4486233/p/6482711.html
https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html
https://docs.docker-cn.com/get-started/part2/