如何以编程方式获取运行容器的容器ID(在Docker上)?
我有一个泊坞窗设置的应用程序。 我想在主机上运行一个脚本,在现有的(正在运行的容器)中运行一些命令。
如果我知道容器标识,说…它是50250e572090 …然后我可以像这样运行脚本
例如 …
#!/usr/bin/env bash docker exec 50250e572090 example_command_1_here docker exec 50250e572090 example_command_2_here docker exec 50250e572090 example_command_3_here docker exec 50250e572090 example_command_4_here
这工作很好! …但这里的东西是,我只知道图像名称…不是容器ID。 find容器ID …我使用docker ps
…我得到这样的东西…
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 50250e572090 aws_beanstalk/staging-app:latest "/sbin/my_init" 29 hours ago Up 29 hours 80/tcp, 443/tcp drunk_bardeen
它的输出不是我可以使用的(通过pipe道)。 我可以运行哪个命令来获取容器ID作为输出,然后可以将其input到脚本中? 或者现在很清楚我正在努力达到什么…有更好的方法吗?
Ps:我的背景是,我在弹性豆杆上…但是我不明白这是怎么改变的。 不妨在本地主机上…问题是一样的。
我能够实现这个使用-q
标志。 像这样…
#!/usr/bin/env bash docker exec `docker ps -q` example_command_1_here docker exec `docker ps -q` example_command_2_here docker exec `docker ps -q` example_command_3_here docker exec `docker ps -q` example_command_4_here
你要求的并不是那么容易。 多个容器可以使用相同的图像。
您可以使用docker ps
和filter来查看从特定图像派生的容器:
$ docker ps -q --filter "ancestor=aws_beanstalk/staging-app:latest"
请注意,这将使用aws_beanstalk/staging-app:latest
图像返回所有正在运行的容器, aws_beanstalk/staging-app:latest
图像可能不止一个。
您可以运行docker检查命令并获取容器的Id;
viswesn@viswesn-PC1:~$ docker inspect My_First_Docker | grep Id | awk '{print $2}' "e3824f0121f24dded9792f133344a2d68b46ea13065481c30caf35d0ac6be40e",
- 具有Docker和持久存储的弹性Beanstalk
- 如何在Amazon Elastic Beanstalk单容器Docker环境中运行Rails迁移和种子
- AWS Docker Golang。 'eb deploy'错误
- 在AWS上监控和扩展基于Docker的Celery工作者群集
- Docker镜像里面的进程是否仍然需要pipe理?
- Go和Docker:当我使用stdlib时,我能够运行一个去web服务器,当我使用自定义包发生错误
- “nginx-proxy”docker image socket volume not mounted
- 在AWS EBS microservice docker环境中使用Kafka,以避免丢失用户请求并处理更多并发点击
- 如何将docker-compose.yml转换为Django的Dockerrun.aws.json