当前位置: 首页 > 知识库问答 >
问题:

动态获取docker run命令创建的正在运行的容器id/名称

谢翰学
2023-03-14

所以我试图运行下面的外壳脚本,它需要容器的ID/名称(脚本将在其中运行)动态。

一种方法是使用docker ps,然后获取容器Id,但这不是动态的。

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

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

共有3个答案

高琛
2023-03-14

我刚刚想出了一个方法来解决这个问题。我经常在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

过滤器的文档在这里。希望这能帮助别人。

弘浩瀚
2023-03-14

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

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

然后可以在docker exec命令中使用容器id,如下所示:

docker exec $container_id ls -la

或者

docker stop $container_id

注意:不要为容器使用(唯一的)名称,而是使用ID,这是本文关于如何将服务器/容器视为牛而不是宠物的启发

慕逸仙
2023-03-14

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

docker run --name mycontainer ...

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

docker exec -it mycontainer ...
 类似资料:
  • 我目前用JavaFX制作了一个表单。我总是按一个按钮,我调用“addAnswer()”-方法。在其中,我创建了一个RadioButton、一个Label和一个deleteButton,我将它们捆绑在一个HBox中。我把所有的HBox都装在一个vBox中。现在的问题是删除按钮。我想深入研究点击按钮的HBox。 这是我的代码: 我在上面试过这个,但我意识到,所有的delAnswers-Button都有

  • 问题内容: 我准备了一个docker-compose文件来部署带有数据库的容器: 没关系。但是现在我需要创建一个数据库并建立其结构。我需要执行一些sql命令。为了检查我是否能够做到这一点,我将其添加到服务中: 但是我遇到以下错误: 我感觉命令是在Sql Server实例启动之前执行的。我该如何解决?Sql Server启动后如何执行一些sql? 问题答案: 问题是在容器中仅执行一个命令。当您在其中

  • 问题内容: 从容器名称获取docker容器ID的命令是什么? 问题答案: 在Linux中: 或在OS X,Windows中: 您的容器名称在哪里。 如@llia Sidorenko所述,为避免产生误报,您可以使用正则表达式锚点,如下所示: 说明: 为了安静。仅输出ID 对所有人。即使您的容器未运行也能正常工作 用于过滤器。 容器名称必须以该字符串 开头 容器名称必须 结束 这个字符串

  • 从容器名称中获取Docker容器id的命令是什么?

  • 问题内容: 我有一个创建的容器,但我不记得我用来启动它的确切命令。有什么办法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同, 我想知道的是生成容器的完整docker命令,而不是容器内的命令。 问题答案: 通过查看的输出,您可以推断出大部分信息。 例如,您可以通过查看键来发现在容器内部启动的命令。如果我运行: 我以后可以运行: 得到: 同样,的输出还将包含有关容器中使用的Dock

  • 我有一个我创建的容器,但我记不起我用来启动它的确切的docker run命令。有什么方法可以找回吗? 这与在Docker中查看运行/停止容器的完整命令不同,我想知道的是生成容器的完整Docker命令,而不是容器中的命令。