Created
December 18, 2022 14:18
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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