Skip to content

Instantly share code, notes, and snippets.

@Guilhem7
Last active August 8, 2025 19:10
Show Gist options
  • Save Guilhem7/f027ff5d8576f74bafa96d21cd3bfd89 to your computer and use it in GitHub Desktop.
Save Guilhem7/f027ff5d8576f74bafa96d21cd3bfd89 to your computer and use it in GitHub Desktop.
fzf bash binding to enter runnning container
### Functions to preview docker process
docker_preview_proc(){
AWK_SCRIPT='
BEGIN {
# ANSI color codes
red = "\033[91m"; # Bright Red
blue = "\033[94m"; # Light Blue
green = "\033[92m"; # Bright Green
yellow = "\033[93m"; # Light Yellow
bold = "\033[1m";
bold_blue = "\033[1;94m";
bold_green = "\033[1;92m";
bold_yellow= "\033[1;93m";
reset = "\033[0m";
}
NR==1 {
# Header line with bold colors
printf "%s%-15s %-8s %s%s\n", bold, $1, $2, $3, reset;
next;
}
{
user = $1;
pid = $2;
$1 = ""; $2 = "";
cmd = substr($0, index($0, $3));
user_color = (user == "root") ? red : blue;
printf "%s%-15s%s %s%-8s%s %s%s%s\n", user_color, user, reset, green, pid, reset, yellow, cmd, reset;
}
'
docker top "${1}" -eo user,pid,cmd |awk "${AWK_SCRIPT}"
}
export -f docker_preview_proc
### FZF Docker exec
FZF_DOCKER_HEADER="Choose a docker container"
FZF_DOCKER_FORMAT="{{.ID}} \t{{.Names}} \t{{.Image}} \t{{.Ports}}"
__fzf_docker_exec__(){
local _docker_cmd _shell_to_use container container_id
if ! type -p fzf &>/dev/null 2>&1;then
echo -e "Please run: sudo apt install fzf"
return 1
fi
if [[ ! $(groups) =~ docker ]];then
# Refresh / Enable sudo token
sudo whoami &>/dev/null
_docker_cmd="sudo docker"
else
_docker_cmd="docker"
fi
_shell_to_use=("bash" "sh" "ash")
container=$($_docker_cmd ps --format "${FZF_DOCKER_FORMAT}" |fzf --reverse --header="${FZF_DOCKER_HEADER}" --preview 'bash -c "docker_preview_proc {1}"')
if [ -n "${container}" ];then
container_id=$(echo "${container}"|cut -d ' ' -f 1)
for shell_to_run in "${_shell_to_use[@]}";do
if $_docker_cmd exec "${container_id}" "${shell_to_run}" >/dev/null;then
_run_shell="${shell_to_run}"
break
fi
done
if [ -n "${_run_shell}" ];then
$_docker_cmd exec --user root -it "${container_id}" "${_run_shell}"
else
echo -e "No shell available in this docker"
fi
fi
}
# Press Alt + a to enter a running container
bind -x '"\ea":__fzf_docker_exec__'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment