Docker在重启时删除更改

我正在使用下面的命令来启动docker容器

# docker run --restart=always -d -p 80:80 image_name 

这意味着docker守护进程将在进程退出时重新启动进程,但似乎在进程重新启动后容器中所做的更改将保留。 有什么办法让docker守护进程在进程重启时删除所有的改变吗? 我的意思是我希望docker守护进程从图像启动一个新的容器,而不是只重新启动进程。

Docker Engine API没有办法。

最好的办法是使用–restart = no(default)参数运行容器,并使用外部进程监视器。 例如,如果您有一个基于RHEL的操作系统,则可以使用systemd单元文件。 然后,您将控制您的容器作为服务。

我通常这样做:

 [Unit] Description=My Service Requires=docker.service [Service] ExecStartPre=/usr/bin/docker create -d --name=container_name image_name ExecStart=/usr/bin/docker start container_name ExecStop=/usr/bin/docker stop container_name ExecStopPost=/usr/bin/docker rm container_name [Install] WantedBy=multi-user.target 

您也可以使用具有自动娱乐选项的docker-compose。