Skip to content

Instantly share code, notes, and snippets.

@rimelek
Created December 18, 2022 14:18
Show Gist options
  • Save rimelek/f10d9e301f7686cd82938c5128ea7595 to your computer and use it in GitHub Desktop.
Save rimelek/f10d9e301f7686cd82938c5128ea7595 to your computer and use it in GitHub Desktop.
Custom shell to use Docker Desktop and Rancher Desktop on the same machine using their own clients
#!/bin/bash
set -eu -o pipefail
function docker_desktop() {
CONTEXT_DESC="Docker Desktop"
DD_HOME="$HOME/.docker"
export PATH="/usr/local/bin:$PATH"
export DOCKER_CONTEXT=desktop-linux
export DOCKER_CONFIG="$DD_HOME"
container_desktop_shell
}
function rancher_desktop() {
CONTEXT_DESC="Rancher Desktop"
RD_HOME="$HOME/.rd"
SOCKET_DIR="$RD_HOME"
export PATH="$RD_HOME/bin:$PATH"
export DOCKER_CONTEXT=rancher-desktop
export DOCKER_CONFIG="$RD_HOME/docker"
container_desktop_shell
}
function container_desktop_shell() {
(
docker --context default context ls --quiet | grep "^$DOCKER_CONTEXT\$" \
|| docker --context default context create "$DOCKER_CONTEXT" --description "$CONTEXT_DESC" --docker "host=unix://$SOCKET_DIR/docker.sock"
) 1>/dev/null
exec $SHELL
}
shell_name="${1:-}"
case "$shell_name" in
docker)
docker_desktop
;;
rancher)
rancher_desktop
;;
*)
>&2 echo "Valid container desktop shell names: docker, rancher"
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment