如何在最基本的层面上正确使用docker?

如何在最基本的层面上正确使用docker?,docker,Docker,我正在使用Docker for Windows(带Hyper-V的教育版),对Docker来说我是个新手。我的工作流程感觉有点复杂,我认为有更好的方法。我是这样做的: 当我使用Docker容器开发时,我首先向我的项目添加一个Dockerfile 然后,我将通过运行类似于docker build-t containername的命令来构建容器。 Docker构建完成后,我将使用类似于Docker run-p 8080:8080 containername的命令运行容器(有时我会在此时添加一个卷)

我正在使用Docker for Windows(带Hyper-V的教育版),对Docker来说我是个新手。我的工作流程感觉有点复杂,我认为有更好的方法。我是这样做的:

当我使用Docker容器开发时,我首先向我的项目添加一个
Dockerfile

然后,我将通过运行类似于
docker build-t containername的命令来构建容器。

Docker构建完成后,我将使用类似于
Docker run-p 8080:8080 containername
的命令运行容器(有时我会在此时添加一个卷)

这将运行容器,并使我的Powershell处于可以从容器中读取调试消息等的状态

然后我正在测试和开发应用程序

完成开发和测试后,我需要CTRL+C以退出正在运行的容器

现在是棘手的部分:比如说,我忘了什么,想马上测试我忘了测试的东西。我会再次运行
docker build-t containername.
但是
docker现在会告诉我,端口已经被占用了。所以我继续这样说:

我使用以下命令搜索我的容器:
docker ps

一旦我找到了名字(即
silly\u walrusbeard
),我就键入
docker stop silly\u walrusbeard
。现在我可以再次运行
docker build-t containername.
,端口现在是空闲的


如何简化此工作流?除了CTRL+C之外,还有其他方法可以停止容器吗?谢谢你的建议

docker ps-a
列出所有当前容器。用
docker Kill
杀死他们,也许还有
docker rm

当您运行新容器时,当容器停止时,使用
--rm
自动释放端口(以及其他内容):

docker run --rm -it containername 

(在运行Shell时,我通常需要
-it
,但我不确定是否需要powershell。也许你不需要它)

如果我积极地迭代代码,我倾向于在Docker之外进行,以减少这种摩擦。您可以使用一致的
--name
运行
docker-rm
图像,以便以后更容易
docker-rm
(保存
docker-ps
步骤)。您也可以在这里使用Docker Compose;重新运行
docker compose up
将根据需要重新创建现有容器,并在YAML文件中记录所有容器选项。感谢
--name
的建议!这太棒了,对我的工作流程来说是一个很好的改进!我也会考虑使用<代码> DOCK撰写< <代码> >它对我来说只是一个“太多”的开始,但它可能是更好的解决方案!编写DockerFile时,我的默认命令是(在bash中):
docker build-t abc.&docker run-it--rm abc
。这可以处理几乎所有的事情,虽然不太复杂,但适应性很强。此外,如果我理解正确,我只需按下两个按钮即可运行它(“向上”和“回车”),使用
--rm
--it
运行
docker run
,这样就不需要
docker ps
docker stop
?@是吗