-
-
Save lamlion/e02ee1a0d5c03d4d9b10d23ed543ae2b 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 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