我无法理解码头工人的这一部分。我花了很多天时间对此进行研究,并遇到了诸如docker-compose
和docker container commit
之类的内容。如果我有一个图像并且我对代码库进行了更改,那么如何使用代码更改来更新我的docker镜像?我认为Dockerfile本应该处理这个,但它对我不起作用。任何帮助表示赞赏。
答案 0 :(得分:2)
Dockerfile
负责创建可用于运行容器的docker镜像。如果您想更新图像内部的图像配置或代码库,则需要重建图像。
例如,您可能有一个Dockerfile在构建过程中提取代码库,在这种情况下,只要需要包含新代码,您就需要重建映像。或者假设您需要更新应用程序的生产版本,然后需要重建包含应用程序稳定分支的新版本的映像。
此外,如果您正在使用它进行开发,那么您可能需要将应用程序目录作为卷安装,这使您能够立即查看更改,而无需重建docker镜像,除非需要这样做。 / p>
对于docker-compose
,您可以将其视为docker run
命令,它提供了一种从特定图像运行容器的简便方法,包括暴露端口或安装卷或将多个容器链接在一起等。< / p>
参考文献:
答案 1 :(得分:2)
你可以尝试docker-compose up --force-recreate
;或者如果您对Dockerfile进行了更改,则可能需要重建它。您可以使用docker-compose build
执行此操作(您可以在末尾附加--no-cache
以强制下载依赖项等)。
请注意,在某些情况下,您可能必须使用docker system prune
删除创建的图像/构建/容器(您可以在其末尾添加-a以删除任何已停止的容器和所有未使用的图像 - 不只是悬空图像)。然后使用docker-compose build
进行构建。
您还可以使用docker stop $(docker ps -a -q)
后跟docker rm $(docker ps -a -q)
来停止并删除所有泊坞广告容器。
希望这会指出你正确的方向,祝你好运!
答案 2 :(得分:2)
有两个选项。
如果使用docker-compose命令,
首先使用
删除上一张图片docker rmi'image_id'或docker rmi -f'image_id'
然后使用重新创建图像,
'docker-compose up'
如果使用的是docker命令,
运行docker build