即时部署对Docker及其容器的更改

品牌崭新的Docker在这里。 我有一个在远程虚拟机上运行的Docker,并且正在运行一个虚拟容器(我可以通过发出docker ps命令来validation容器正在运行)。

我想通过给docker用户非root权限来保护我的Docker安装:

 sudo usermod -aG docker myuser 

但是,如果“热部署”出现问题,我恐怕会在运行任何容器时使用Docker。 所以这就是我想知道的一般情况:如果我想在Docker(守护进程,我推测)上进行任何types的操作工作,而在其上运行的活动容器,我该怎么做? 是否所有的容器都需要先停止/停止? 或者,Docker会在适当的时候保持打勾并应用更新?

容器本身也一样。 说我有一个myapp-1.0.4容器部署到一个Docker守护进程。 现在我想部署myapp-1.0.5 ,这是如何工作的? 我停止1.0.4 ,从Docker中删除它,然后部署/运行1.0.5 ? 或者是Docker在底层为我处理这个问题?

如果我想对Docker(守护进程,我推测)做任何types的操作工作,而在其上运行的活动容器,我该怎么做? 是否所有的容器都需要先停止/停止? 或者,Docker会在适当的时候保持打勾并应用更新?

通常情况下,所有容器都先停下来。
这通常发生在我升级docker本身时:我发现我的所有容器都停止了(除了刚创build的数据容器外,仍然如此)

说我有一个myapp-1.0.4容器部署到一个Docker守护进程。 现在我想部署myapp-1.0.5,这是如何工作的? 我停止1.0.4,从Docker中删除它,然后部署/运行1.0.5? 或者是Docker在底层为我处理这个问题?

这取决于你的应用程序的性质和要求:对于完全无状态的应用程序,你甚至可以运行1.0.5(不同的主机端口映射到你的应用程序暴露端口),testing一下,并停止1.0.4 1.0.5已经准备好了。

但是对于具有任何共享状态或资源(挂载卷,共享数据容器,…)的应用程序,在从1.0.5映像启动新容器之前,需要先停止rm 1.0.4。


(1)升级Docker时,为什么不阻止它们[数据容器]?

因为…他们从来没有开始。
在容器的生命周期中,可以创build,然后启动,然后运行容器。 但是根据定义,数据容器没有可运行的进程:只是公开VOLUME (S),其他容器要装入( --volumes-from

(2)数据/容器容器和运行Docker的容器之间有什么区别,比如说一个完整的MySQL服务器?

不同之处在于,数据容器不会运行任何进程,因此在所述进程停止时不会退出。 这从来没有发生,因为没有进程运行。
只要服务器进程不停止,MySQL服务器容器就会运行。