我想重新启动我的Docker容器以应用所做的新更改。我不想在每次更改时创建新映像,而是希望它覆盖旧映像,然后使用重写的映像重新启动容器。我试过停止容器,然后构建一个与旧容器同名的映像。然后我写docker -compose up -d。问题是这会创建一个名为like -web的新容器
docker -compose up -d
zkure5ic1#
标准的方法是构建一个新的映像,停止现有的服务器容器,然后基于新的映像启动一个新的容器。
docker-compose build docker-compose up -d
将此与用Java或Go这样的编译语言运行服务器进行比较,您可以看到完全相同的工作流:把你更新的源代码编译成一个新的jar文件或二进制文件,停止现有的服务器,然后启动一个新的服务器。通常没有理由试图保留现有的进程并用新代码更新它。同样,容器是单个(临时)进程的(临时) Package 器,没有特别的理由需要相同的容器;在正常操作中,您应该能够删除和重新创建容器而不会丢失任何内容。在Docker中,您需要定期重新创建容器,以更改各种仅启动时选项,并更新底层映像。如果您转向Kubernetes等集群环境,这将变得更加重要:您将拥有一个容器的多个副本,因此它们不能具有持久状态,并且有可能在您的直接控制之外删除和重新创建容器。
1条答案
按热度按时间zkure5ic1#
标准的方法是构建一个新的映像,停止现有的服务器容器,然后基于新的映像启动一个新的容器。
将此与用Java或Go这样的编译语言运行服务器进行比较,您可以看到完全相同的工作流:把你更新的源代码编译成一个新的jar文件或二进制文件,停止现有的服务器,然后启动一个新的服务器。通常没有理由试图保留现有的进程并用新代码更新它。
同样,容器是单个(临时)进程的(临时) Package 器,没有特别的理由需要相同的容器;在正常操作中,您应该能够删除和重新创建容器而不会丢失任何内容。在Docker中,您需要定期重新创建容器,以更改各种仅启动时选项,并更新底层映像。如果您转向Kubernetes等集群环境,这将变得更加重要:您将拥有一个容器的多个副本,因此它们不能具有持久状态,并且有可能在您的直接控制之外删除和重新创建容器。