我已经创建了一个.net核心web api项目,并在Docker Desktop for Window下成功运行了它。只要我在Visual Studio中运行项目,它就能正常工作。我运行"Docker“配置文件,并使用localhost:8000/访问它。我已将其配置为使用端口8000...
但是,当我停止visual studio调试器时,即使它在Docker Desktop中仍然显示为“正在运行”,我也无法再访问它。如果不在Visual Studio中运行项目,如何访问容器中的服务?
我是这个领域的新手,但是如果已经构建了一个镜像,并且该镜像在容器中运行,我想我将能够访问它,而不需要运行visual studio项目。容器不是“我的镜像的编译、构建、独立实例,在docker主机上运行”吗?
谢谢,布伦特
发布于 2021-04-05 20:28:34
容器不是“在docker主机上运行的我的映像的编译、生成和独立实例吗?”是的,你是100%正确的,但在Visual Studio中,他们做了一些性能调整,这样一切都可以运行得非常顺利,而不需要停止和删除容器,更新图像和运行它等任何开销。事实上,在幕后,你的二进制文件和源代码是通过卷映射的,所以没有必要在每次运行应用程序时都构建新的图像等。如果您在Visual Studio创建容器上运行docker inspect,您将能够在JSON输出的"Mounts“部分中看到映射。
我从启用了ASP.NET的模板中创建了一个全新的Docker Core web API应用程序。我注意到容器的生命周期与Visual Studio进程相关联。如果我关闭Visual Studio,容器就会停止并删除,只要我在Visual Studio中用前面提到的项目打开解决方案,容器就会立即启动并运行,即使我还没有开始调试。
如果你想在Visual Studio之外运行一个容器,你总是可以从项目中的Dockerfile构建镜像并运行它。
它可能看起来像这样:
cd "path/with/your/Dockerfile"
docker build -t "your-image-name" .
docker run -it -p 8000:80 -n "your-container-name" "your-image-name"
https://stackoverflow.com/questions/66956859
复制