以下代码将停止并删除Docker容器-
docker rm -f CONTAINER_ID
但是它需要 Container ID ,我从运行另一个代码docker ps
来获取使用典型端口的ID(例如例如0.0.0.0:8383-> PORTS 列中的8383 / tcp 。
我正在寻找一种方法,将这两个代码捆绑在一起,并以 PORT 作为变量,这样一来,我就无需手动提供从PORTS
获得的容器ID。 / p>
有没有可能?
答案 0 :(得分:0)
尝试一下:
PORT=8383
docker container ls --format="{{.ID}}\t{{.Ports}}" |\
grep ${PORT} |\
awk '{print $1}'
第一个命令列出了正在运行的容器,但仅输出容器ID和端口。结果通过管道传递到grep
中,以获取感兴趣的容器。 awk
命令获取容器ID。
:7777
,:8888
,:9999
上创建3个Nginx容器。for PORT in 7777 8888 9999
do
docker run --detach --publish=${PORT}:80 nginx
done
docker container ls
for PORT in 7777 8888 9999
do
echo "Looking for a container on port: ${PORT}"
ID=$(\
docker container ls --format="{{.ID}}\t{{.Ports}}" |\
grep ${PORT} |\
awk '{print $1}')
echo "Found Container ID: ${ID}"
echo "Stopping and removing it"
docker container stop ${ID} && docker container rm ${ID}
done