让.NetCore程序跑在任何有docker的地方
一.分别在Windows/Mac/Centos上安装Docker
Windows上下载地址:https://docs.docker.com/docker-for-windows/install/(window上安装的常见问题和解决方案请参考下方步骤六)Mac上下载地址:https://hub.docker.com/editions/community/docker-ce-desktop-macCentos上安装Docker请参考我上篇文章链接:https://www.cnblogs.com/peyshine/p/12915317.html二.打开vs 新建一个Web程序



对dockerfile文件解释说明:
1.FROM通过FROM指令来设置要制作的镜像基于哪个镜像,FROM指令必须是整个Dockerfile的第一个指令,如果指定的镜像不存在默认会自动从Docker Hub上进行拉取2.WORKDIR通过workdir指令用于设置Dockerfile中的RUN、CMD和ENTRYPOINT指令执行命令的工作目录(默认为/目录),该指令在Dockerfile文件中可以出现多次,如果使用相对路径则为相对于WORKDIR上一次的值3.COPY通过COPY指令来从指定路径拷贝一个文件或目录到容器的指定路径中4.RUNRUN指令会在一个新的容器中执行任何命令,然后把执行后的改变提交到当前镜像,提交后的镜像会被用于Dockerfile中定义的下一步操作,RUN中定义的命令会按顺序执行并提交,这正是Docker廉价的提交和可以基于镜像的任何一个历史点创建容器的好处,就像版本控制工具一样5.EXPOSE通过EXPOSE指令用来告诉Docker这个容器在运行时会监听哪些端口6.ENTRYPOINT通过ENTRYPOINT指令我们指定在容器启动时要运行的应用程序 关于dockerfile的更多用法可以参考:https://docs.docker.com/engine/reference/builder/三.DotNet Core 程序在Windows Docker上的运行


可以看到运行之前,VS先做了几个检查工作
- windows上是否安装了Docker Desktop
- Docker Desktop是否在运行
- Docker Desktop的操作系统模式是否与项目的目标操作系统匹配
- 指定需要的镜像本地是否存在,不存在的就会进行拉取
- 检查完了之后就是打包镜像和运行容器
四.打包发布镜像到https://hub.docker.com/
选择发布到Docker hub,输入自己的账号密码,没有的话可以注册一个







五.DotNet Core 程序在Centos Docker上的运行
重新在VS中添加一个dockerfile,这次选择linux平台的

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS baseWORKDIR /appEXPOSE 80COPY . /appENTRYPOINT ["dotnet", "WebApp_Docker.dll"]发布后将Release文件下所有文件上传到centos上,然后执行以下命令打包镜像
docker build -t docker_web_test:1.0 .后面的点可以打印出具体的执行步骤细节


docker run --name docker_web_test -d -p 7788:80 docker_web_test:1.0

六.可能遇见的错误解决方案以及小提示:
1.在window上安装docker时需要勾选上Hyper-V


没有评论:
发表评论