动态获取由docker run command

时间:2017-09-04 06:38:40

标签: linux bash docker

所以我试图运行以下shell脚本,它需要动态容器的容器ID /名称(运行脚本)。

一种方法可能是 docker ps ,然后获取容器ID,但这不是动态的。

有没有办法动态地做到这一点?

#!/bin/bash
docker exec <container id/name> /bin/bash -c "useradd -m <username> -p <password>"

3 个答案:

答案 0 :(得分:5)

使用--name选项运行时,可以为容器指定一个特定名称。

docker run --name mycontainer ...

然后你的exec命令可以使用指定的名称:

docker exec -it mycontainer ...

答案 1 :(得分:1)

您可以启动容器并将容器ID存储在变量中,如下所示:

container_id=$(docker run -it --rm --detach busybox)

然后,您可以像这样在docker exec命令中使用容器ID:

docker exec $container_id ls -la

docker stop $container_id

注意:本文的主题是如何将服务器/容器视为cattle and not pets

,而不是为容器使用(唯一的)名称,而是使用ID。

答案 2 :(得分:0)

我刚刚想出了一种可行的方法。我经常用bash进入我的容器,但是每次这样做,我都必须查找正在运行的容器的ID-这很麻烦。我这样使用--filter命令:

docker ps -q --filter="NAME={name of container}"

然后输出的唯一内容是容器的ID,它使我可以运行:

docker exec -it $(docker ps -q --filter="NAME={name of container}") bash

这是我在这种情况下真正想做的。

您可以按

进行过滤
id, name, label, exited, status, ancestor, 
beforesince, volume, network, publishexpose, 
health,isolation, or is-task

过滤器的文档为here。希望能对某人有所帮助。