根据条件,获取docker容器名称
根据进程ID,获取docker容器名称(推荐)
#!/bin/bash # 接收进程ID作为输入参数 process_id="$1" # 获取容器ID container_id=$(cat /proc/"$process_id"/cgroup | tail -1) container_id=${container_id##*/} # 检查是否成功获取容器ID if [[ -n "$container_id" ]]; then # 获取容器名称 container_name=$(docker inspect --format "{{.Name}}" "$container_id") # 移除容器名称前面的斜杠 container_name=${container_name:1} # 输出容器ID和容器名称 echo "进程ID $process_id 对应的容器ID为: $container_id" echo "容器ID $container_id 对应的容器名称为: $container_name" else # 如果没有找到匹配的容器ID,则输出相应信息 echo "未找到进程ID $process_id 对应的容器" fi
根据进程ID,获取docker容器名称(不推荐)
#!/bin/bash # 拿到输入的参数进程号 current_pid=$1 echo 'input current_pid:' ${current_pid} docker_info='' # function get_docker_info(){ docker_info=`docker ps -aq` #echo ${docker_info} } get_docker_info echo 'docker_info:' ${docker_info} # find flag, 0-find 1-not find find_flag=0 find_container_name='' while((find_flag==0)) do echo 'current_pid:' ${current_pid} for loop in ${docker_info} do container=`docker inspect --format='{{.Name}} - {{.State.Pid}}' ${loop}` #echo 'container:' ${container} container_name=`echo ${container} | awk '{print $1}'` #echo 'contain_name:' ${container_name} container_pid=`echo ${container} | awk '{print $3}'` #echo 'container_pid:' ${container_pid} if [ ${current_pid} == ${container_pid} ] then echo 'current_pid:' ${current_pid} ' is same with container_pid:' ${container_pid} ' so container is :' ${container_name} find_flag=1 find_container_name=${container_name} break; else #echo 'current_pid:' ${current_pid} ' is not same with container_pid:' ${container_pid} 'so continue loop' continue fi done #echo 'find_flagg:' ${find_flag} if [ ${find_flag}==0 ] then proc_stat=`cat /proc/${current_pid}/stat` echo 'proc_stat:' ${proc_stat} current_ppid=`echo ${proc_stat} | awk '{print $4}'` echo 'current_ppid:' ${current_ppid} current_pid=${current_ppid} else echo 'already find find_container_name:' ${find_container_name} fi done
根据docker的层id,输出docker容器名
#!/bin/bash # 接收层ID作为输入参数 layer_id="$1" # 获取所有容器列表 containers=$(docker ps -a --format "{{.ID}}") # 遍历每个容器 for container_id in $containers; do # 执行docker inspect命令并通过grep查找层ID inspect_output=$(docker inspect "$container_id" | grep "$layer_id") # 检查是否找到匹配的层ID if [[ -n "$inspect_output" ]]; then # 提取容器名称 container_name=$(docker inspect --format "{{.Name}}" "$container_id") # 移除容器名称前面的斜杠 container_name=${container_name:1} # 输出匹配的容器名称 echo "层ID $layer_id 对应的容器名称为: $container_name" # 退出循环,因为已经找到匹配的容器 exit 0 fi done # 如果没有找到匹配的容器,则输出相应信息 echo "未找到层ID $layer_id 对应的容器" exit 1
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?