从共享目录中获取容器的名称

时间:2016-10-24 15:07:12

标签: bash docker

目前我正在使用各种应用程序运行超过15个容器的docker。我正好在我每次使用创建容器的命令时都厌倦了查看我的文档。尝试创建脚本和别名命令以简化此过程我遇到了这个问题:

有没有办法从主机的共享文件夹中获取容器的名称?

例如,我有一个目录“MyApp”,在其中我启动了一个共享文件夹“shared”的容器。如果出现以下情况将是完美的:
a。我在某处有一个全局脚本,并且分别设置了别名命令和
b。我可以从任何“OneOfMyApps”目录及其子目录中运行类似“startit”/“stopit”/“rmit”的内容。我想跳过docker ps - > Cp - >等等每次,只需从脚本中获取容器的名称。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

嗯,一种解决方案是使用环境变量将名称传递到容器中,并使用卷中的某些预定文件来存储名称。因此,您将使用-e标志创建容器 docker create --name myapp -e NAME=myapp myappimage

在图像入口点脚本中你会有类似的东西 cd /shared/volume echo $NAME >> .containers

在你的shell脚本中,你会做类似

的事情
function stopit() {
    for name in `cat .containers`; do
        docker stop $name;
    done;
}

但这有点脆弱。如果您要编写命令脚本,我建议使用docker ps获取容器列表,然后使用docker inspect查找哪些使用此特定共享卷。你可以在脚本中做所有这些,所以问题是什么。