Docker 作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境、测试环境、UAT 环境、生产环境的依赖一致性,需要大量的运维人力,使用 Docker 我们可以实现一次部署,到处运行。
本文介绍如何把 ASP.NET Core 网站部署在 Docker 中运行。
CentOS 7.3.1611 Docker 1.12.6 .NET Core 1.1
- $#安装Docker$ yum install docker
- $#启动docker服务$ systemctl start docker.service
- $#配置开机启动$ systemctl enable docker.service
由于众所周知的原因,要想流畅地使用 Docker,需要配置 Docker 加速器,否则你会觉得回到了拨号上网的时代。 我使用的是 DaoCloud,号称永久免费。注册地址是:https://account.daocloud.io/signin。 用微信扫一扫就可以快速完成注册。 注册完成会提供有一个配置脚本地址:
- $#配置docker加速器$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxxxxx.m.daocloud.io$#重启生效$ systemctl restart docker
- $ docker pull microsoft/aspnetcore
- $#检查是否成功$ docker images
可以参考我之前的文章:ASP.NET Core 网站发布到 Linux 服务器
放到网站根目录,文件内容参考如下:
- FROMdocker.io/microsoft/aspnetcoreCOPY./publishWORKDIR/publishEXPOSE 8080
- CMD ["dotnet", "TestAspNetCoreweb.dll"]
- $#注意最后有个点。$ docker build -t test-netcore:1.0.
- $ docker run --name test-netcore -p8080:8080-d test-netcore:1.0$#检查容器是否启动成功$ docker ps
网站运行成功。
配置过程我遇到容器启动失败的两个情况: 1. 网站的监听使用了 ip,报错 "Error -99 EADDRNOTAVAIL address not available" 2. 网站的监听使用了 localhost,报错 "curl: (56) Recv failure: Connection reset by peer" 最后发现使用 http:*:8080 来监听才成功。
docker run 失败后再次运行会提示名称已存在,可以使用 docker rm -f [容器名称] 删除容器或换个名称。
来源: http://www.cnblogs.com/keepcodingforever/p/6698862.html