这里是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/