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

时间:2015-09-19 09:38:11

标签: docker

品牌在这里打起了新的Docker。我在远程VM上运行Docker并在其上运行一个虚拟容器(我可以通过发出docker ps命令验证容器是否正在运行。)

我希望通过为docker用户提供非root权限来保护我的Docker安装:

sudo usermod -aG docker myuser

但我害怕在任何容器运行的情况下使用Docker进行捣乱,以及#34;热部署"制造问题。所以这让我有些疑惑,一般来说:如果我想在Docker(守护进程,我猜想)上进行任何类型的操作工作,同时在其上运行实时容器,我该怎么办?是否需要先停止/停止所有容器?或者Docker会在适当的时候继续滴答并应用更新吗?

容器本身也是如此。假设我有一个myapp-1.0.4容器部署到Docker守护程序。现在我想部署myapp-1.0.5,这是如何工作的?我是否停止1.0.4,将其从Docker中删除,然后部署/运行1.0.5?或者Docker是否在幕后为我处理这个问题?

1 个答案:

答案 0 :(得分:3)

  

如果我想对Docker(守护进程,我推测)进行任何类型的操作工作,同时在其上运行实时容器,我该怎么办?是否需要先停止/停止所有容器?或者Docker会在适当的时候继续滴答并应用更新吗?

通常,所有容器都先停止 这通常是在我升级docker本身时发生的:我发现我的所有容器都已停止(data containers, which are just created除外,并且仍然如此)

  

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

这取决于你的应用程序的性质和要求:对于一个完全无状态的应用程序,你甚至可以运行1.0.5(不同的主机端口映射到你的app暴露端口),测试一下,并停止1.0.4当你认为1.0.5准备就绪时。

但是对于具有任何类型的共享状态或资源(已装载的卷,共享数据容器......)的应用程序,您需要在从1.0.5映像启动新容器之前停止并运行1.0.4。< / p>

  

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

因为......他们从来没有开始过 在容器的生命周期中,您可以创建,然后启动,然后运行容器。但是根据定义,数据容器没有可以运行的进程:它只是暴露VOLUME(S),而其他容器要挂载(--volumes-from

  

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

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