Update Docker容器管理面板
This commit is contained in:
105
Docker容器管理面板
105
Docker容器管理面板
@@ -60,6 +60,57 @@ get_container_name() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 批量删除容器
|
||||||
|
batch_delete_containers() {
|
||||||
|
local numbers="$1"
|
||||||
|
local confirm="$2"
|
||||||
|
|
||||||
|
# 处理输入,支持空格和逗号分隔
|
||||||
|
numbers=$(echo "$numbers" | sed 's/,/ /g')
|
||||||
|
|
||||||
|
local success_count=0
|
||||||
|
local fail_count=0
|
||||||
|
|
||||||
|
for number in $numbers; do
|
||||||
|
if [[ "$number" =~ ^[0-9]+$ ]]; then
|
||||||
|
container_name=$(get_container_name $number)
|
||||||
|
if [ -n "$container_name" ]; then
|
||||||
|
if [ "$confirm" != "y" ]; then
|
||||||
|
echo -e "${YELLOW}删除容器: $container_name${NC}"
|
||||||
|
read -p "确认删除?(Y/n): " confirm_delete
|
||||||
|
confirm_delete=${confirm_delete:-Y} # 默认Y
|
||||||
|
if [[ "$confirm_delete" != "y" && "$confirm_delete" != "Y" ]]; then
|
||||||
|
echo -e "${GREEN}跳过: $container_name${NC}"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if docker rm -f "$container_name" &> /dev/null; then
|
||||||
|
echo -e "${GREEN}✓ 删除成功: $container_name${NC}"
|
||||||
|
success_count=$((success_count + 1))
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ 删除失败: $container_name${NC}"
|
||||||
|
fail_count=$((fail_count + 1))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ 容器编号不存在: $number${NC}"
|
||||||
|
fail_count=$((fail_count + 1))
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ 无效编号: $number${NC}"
|
||||||
|
fail_count=$((fail_count + 1))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
if [ $success_count -gt 0 ]; then
|
||||||
|
echo -e "${GREEN}成功删除 $success_count 个容器${NC}"
|
||||||
|
fi
|
||||||
|
if [ $fail_count -gt 0 ]; then
|
||||||
|
echo -e "${RED}删除失败 $fail_count 个${NC}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# 主菜单
|
# 主菜单
|
||||||
main_menu() {
|
main_menu() {
|
||||||
while true; do
|
while true; do
|
||||||
@@ -76,8 +127,8 @@ main_menu() {
|
|||||||
echo "1. 启动容器"
|
echo "1. 启动容器"
|
||||||
echo "2. 停止容器"
|
echo "2. 停止容器"
|
||||||
echo "3. 重启容器"
|
echo "3. 重启容器"
|
||||||
echo "4. 删除容器"
|
echo "4. 删除容器 (支持批量: 1 2 3 或 1,2,3)"
|
||||||
echo "5. 批量删除已停止容器"
|
echo "5. 批量删除所有已停止容器"
|
||||||
echo "6. 查看容器日志"
|
echo "6. 查看容器日志"
|
||||||
echo "0. 退出"
|
echo "0. 退出"
|
||||||
echo
|
echo
|
||||||
@@ -85,10 +136,16 @@ main_menu() {
|
|||||||
read -p "请选择操作: " choice
|
read -p "请选择操作: " choice
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1|2|3|4|6)
|
1|2|3|6)
|
||||||
echo
|
echo
|
||||||
read -p "请输入容器编号: " container_number
|
read -p "请输入容器编号: " container_number
|
||||||
|
|
||||||
|
if ! [[ "$container_number" =~ ^[0-9]+$ ]]; then
|
||||||
|
echo -e "${RED}无效的编号${NC}"
|
||||||
|
read -p "按回车键继续..."
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
container_name=$(get_container_name $container_number)
|
container_name=$(get_container_name $container_number)
|
||||||
if [ -z "$container_name" ]; then
|
if [ -z "$container_name" ]; then
|
||||||
echo -e "${RED}容器编号不存在${NC}"
|
echo -e "${RED}容器编号不存在${NC}"
|
||||||
@@ -109,15 +166,6 @@ main_menu() {
|
|||||||
echo -e "${YELLOW}重启容器: $container_name${NC}"
|
echo -e "${YELLOW}重启容器: $container_name${NC}"
|
||||||
docker restart "$container_name" && echo -e "${GREEN}重启成功${NC}" || echo -e "${RED}重启失败${NC}"
|
docker restart "$container_name" && echo -e "${GREEN}重启成功${NC}" || echo -e "${RED}重启失败${NC}"
|
||||||
;;
|
;;
|
||||||
4)
|
|
||||||
echo -e "${RED}删除容器: $container_name${NC}"
|
|
||||||
read -p "确认删除?(y/N): " confirm
|
|
||||||
if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then
|
|
||||||
docker rm -f "$container_name" && echo -e "${GREEN}删除成功${NC}" || echo -e "${RED}删除失败${NC}"
|
|
||||||
else
|
|
||||||
echo -e "${GREEN}取消删除${NC}"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
6)
|
6)
|
||||||
echo -e "${BLUE}查看容器日志: $container_name${NC}"
|
echo -e "${BLUE}查看容器日志: $container_name${NC}"
|
||||||
echo "按 Ctrl+C 退出"
|
echo "按 Ctrl+C 退出"
|
||||||
@@ -126,12 +174,41 @@ main_menu() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
4)
|
||||||
|
echo
|
||||||
|
echo -e "${YELLOW}删除容器 (支持批量删除)${NC}"
|
||||||
|
echo "输入单个编号: 1"
|
||||||
|
echo "输入多个编号: 1 2 3 或 1,2,3"
|
||||||
|
echo "输入 all 删除所有容器"
|
||||||
|
read -p "请输入容器编号: " input
|
||||||
|
|
||||||
|
if [[ "$input" == "all" ]]; then
|
||||||
|
echo -e "${RED}警告:将删除所有容器!${NC}"
|
||||||
|
read -p "确认删除所有容器?(Y/n): " confirm_all
|
||||||
|
confirm_all=${confirm_all:-Y} # 默认Y
|
||||||
|
if [[ "$confirm_all" == "y" || "$confirm_all" == "Y" ]]; then
|
||||||
|
total_count=$(docker ps -aq | wc -l)
|
||||||
|
docker rm -f $(docker ps -aq) &> /dev/null
|
||||||
|
echo -e "${GREEN}已删除所有 $total_count 个容器${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}取消删除${NC}"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
batch_delete_containers "$input" "n" # 第二个参数"n"表示需要单独确认
|
||||||
|
fi
|
||||||
|
;;
|
||||||
5)
|
5)
|
||||||
echo -e "${YELLOW}批量删除已停止的容器...${NC}"
|
echo -e "${YELLOW}批量删除所有已停止的容器...${NC}"
|
||||||
stopped_count=$(docker ps -aq -f status=exited | wc -l)
|
stopped_count=$(docker ps -aq -f status=exited | wc -l)
|
||||||
if [ $stopped_count -gt 0 ]; then
|
if [ $stopped_count -gt 0 ]; then
|
||||||
docker rm $(docker ps -aq -f status=exited)
|
read -p "确认删除 $stopped_count 个已停止容器?(Y/n): " confirm_stopped
|
||||||
|
confirm_stopped=${confirm_stopped:-Y} # 默认Y
|
||||||
|
if [[ "$confirm_stopped" == "y" || "$confirm_stopped" == "Y" ]]; then
|
||||||
|
docker rm $(docker ps -aq -f status=exited) &> /dev/null
|
||||||
echo -e "${GREEN}已删除 $stopped_count 个已停止容器${NC}"
|
echo -e "${GREEN}已删除 $stopped_count 个已停止容器${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${GREEN}取消删除${NC}"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo -e "${GREEN}没有已停止的容器${NC}"
|
echo -e "${GREEN}没有已停止的容器${NC}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user