From fe74fbff630cad65e3c95debdc367e6ab97ce4b5 Mon Sep 17 00:00:00 2001 From: outmanwt <34115996+outmanwt@users.noreply.github.com> Date: Wed, 12 Mar 2025 19:33:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(exec-docker):=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E6=9C=AA=E5=90=AF=E5=8A=A8=E5=AE=B9=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改容器查询命令,增加对容器状态的显示 - 添加判断逻辑,检测容器是否处于运行状态 - 如果容器未启动,提示用户是否要启动它 - 用户选择启动后,继续执行进入容器的操作 - 用户选择不启动,则退出脚本 --- exec-docker.sh | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/exec-docker.sh b/exec-docker.sh index 606f331..526a2a5 100644 --- a/exec-docker.sh +++ b/exec-docker.sh @@ -10,7 +10,7 @@ else fi # 查找匹配关键词的容器 -containers=$(docker ps --format "{{.ID}} {{.Image}} {{.Names}}" | grep "$keyword") +containers=$(docker ps -a --format "{{.ID}} {{.Image}} {{.Names}} {{.State}}" | grep "$keyword") # 检查是否找到匹配的容器 if [ -z "$containers" ]; then @@ -24,6 +24,18 @@ container_count=$(echo "$containers" | wc -l) if [ "$container_count" -eq 1 ]; then # 只有一个匹配的容器,直接进入 container_id=$(echo "$containers" | awk '{print $1}') + container_state=$(echo "$containers" | awk '{print $4}') + + if [ "$container_state" != "running" ]; then + read -p "容器 $container_id 未启动,是否要启动它?(y/n): " start_container + if [ "$start_container" = "y" ]; then + docker start $container_id + else + echo "未启动容器,退出" + exit 1 + fi + fi + echo "找到一个匹配的容器,直接进入: $container_id" docker exec -it $container_id /bin/bash else @@ -34,6 +46,19 @@ else # 提示用户选择一个容器ID read -p "请输入要进入的容器ID: " container_id + # 获取选定容器的状态 + container_state=$(docker inspect -f '{{.State.Status}}' $container_id) + + if [ "$container_state" != "running" ]; then + read -p "容器 $container_id 未启动,是否要启动它?(y/n): " start_container + if [ "$start_container" == "y" ]; then + docker start $container_id + else + echo "未启动容器,退出" + exit 1 + fi + fi + # 进入选定的容器 docker exec -it $container_id /bin/bash -fi +fi \ No newline at end of file