这里是Docker的新品牌。我让Docker在远程VM上运行,并且正在其上运行单个虚拟容器(我可以通过发出docker ps命令来验证该容器正在运行)。

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

sudo usermod -aG docker myuser

但是,如果任何容器都在运行,恐怕在“热部署”产生问题的情况下与Docker混为一谈。因此,这让我总体上感到疑惑:如果我想在Docker(守护程序,我想是守护程序)上进行任何形式的操作,同时又要运行实时容器,该怎么办?是否需要首先停止/停止所有容器?还是Docker会继续打勾并在适当的时候应用更新?

容器本身也是如此。假设我已经将myapp-1.0.4容器部署到Docker守护程序。现在我要部署myapp-1.0.5,这是如何工作的?我是否停止1.0.4,将其从Docker中删除,然后部署/运行1.0.5?还是Docker帮我解决了这个问题?

最佳答案


通常,首先停止所有容器。
通常在升级docker本身时会发生这种情况:我发现我的所有容器都停止了(data containers, which are just created除外,并且保持如此)

这取决于应用程序的性质和要求:对于完全无状态的应用程序,您甚至可以运行1.0.5(将不同的主机端口映射到您的应用程序公开端口),对其进行一点测试,然后在想到时停止1.0.4。 1.0.5准备好了。
但是对于具有任何共享状态或资源(装入的卷,共享的数据容器等)的应用程序,您需要先停止并rm 1.0.4,然后才能从1.0.5镜像启动新容器。


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

再次不同的是,数据容器不运行任何进程,因此在所述进程停止时它不会退出。这是永远不会发生的,因为没有进程要运行。
只要服务器进程没有停止,MySQL服务器容器就可以运行。

关于docker - 即时将更改部署到Docker及其容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32666636/

10-12 22:21
查看更多