{"id":18598,"date":"2025-04-10T10:18:18","date_gmt":"2025-04-10T10:18:18","guid":{"rendered":"http:\/\/www.max-sperling.bplaced.net\/?p=18598"},"modified":"2025-04-15T15:10:51","modified_gmt":"2025-04-15T15:10:51","slug":"switch-between-docker-platforms-macos","status":"publish","type":"post","link":"http:\/\/www.max-sperling.bplaced.net\/?p=18598","title":{"rendered":"Switch between docker platforms (macOS)"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p><u>Docker Engine<\/u> &#8230; Client-server application<\/p>\n<pre>\r\nDocker CLI <--[ Unix domain socket ]--> Docker daemon\r\n  (docker)      (Docker REST API)       (dockerd)\r\n<\/pre>\n<p><u>Docker Desktop \/ OrbStack<\/u> &#8230; Superset of Docker Engine<\/p>\n<pre>\r\n                                              |   Linux VM    |\r\n    Docker CLI <--|                           |---------------|\r\n                  |--[ Unix domain socket ]-->| Docker daemon |\r\nDocker Desktop <--|                           |---------------|\r\nor OrbStack GUI\r\n<\/pre>\n<p><u>Motivation<\/u><br \/>\nIf you have installed multiple Docker platforms (Docker Desktop, OrbStack) on your macOS, you most likely want to switch between them.<\/p>\n<hr>\n<p><strong>Switch the Docker CLI<\/strong><\/p>\n<p><u>Scenario<\/u><br \/>\nYou are using the console to interact with docker. To switch the Docker CLI, you have to switch the symlink.<\/p>\n<p><u>Bash script<\/u><\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\n#!\/bin\/bash\r\n\r\nDOCKER_SYMLINK=&quot;\/usr\/local\/bin\/docker&quot;\r\nORBSTACK=&quot;\/Applications\/OrbStack.app\/Contents\/MacOS\/xbin\/docker&quot;\r\nDOCKER_DESKTOP=&quot;\/Applications\/Docker.app\/Contents\/Resources\/bin\/docker&quot;\r\n\r\nfunction usage() {\r\n    echo &quot;Usage: $0 [orbstack|desktop|status]&quot;\r\n    exit 1\r\n}\r\n\r\nfunction switch_to_orbstack() {\r\n    sudo ln -sf &quot;$ORBSTACK&quot; &quot;$DOCKER_SYMLINK&quot;\r\n    echo &quot;Switched Docker CLI to OrbStack.&quot;\r\n}\r\n\r\nfunction switch_to_desktop() {\r\n    sudo ln -sf &quot;$DOCKER_DESKTOP&quot; &quot;$DOCKER_SYMLINK&quot;\r\n    echo &quot;Switched Docker CLI to Docker Desktop.&quot;\r\n}\r\n\r\nfunction show_status() {\r\n    TARGET=$(readlink &quot;$DOCKER_SYMLINK&quot;)\r\n    echo &quot;Current symlink: $DOCKER_SYMLINK -&gt; $TARGET&quot;\r\n    if [[ &quot;$TARGET&quot; == &quot;$ORBSTACK&quot; ]]; then\r\n        echo &quot;Currently using: OrbStack.&quot;\r\n    elif [[ &quot;$TARGET&quot; == &quot;$DOCKER_DESKTOP&quot; ]]; then\r\n        echo &quot;Currently using: Docker Desktop.&quot;\r\n    else\r\n        echo &quot;Currently using: Unknown target.&quot;\r\n    fi\r\n}\r\n\r\ncase &quot;$1&quot; in\r\n    orbstack)\r\n        switch_to_orbstack\r\n        ;;\r\n    desktop)\r\n        switch_to_desktop\r\n        ;;\r\n    status)\r\n        show_status\r\n        ;;\r\n    *)\r\n        usage\r\n        ;;\r\nesac\r\n<\/pre>\n<hr>\n<p><strong>Switch the Unix domain socket<\/strong><\/p>\n<p><u>Scenario<\/u><br \/>\nYou are using a Docker toolchain with an IDE like CLion (JetBrains). To switch the used Unix domain socket, you have to change the toolchain settings.<\/p>\n<p><u>Sockets<\/u><\/p>\n<pre>\r\nDocker Desktop: \/Users\/{user}\/.docker\/run\/docker.sock\r\nOrbStack: \/Users\/{user}\/.orbstack\/run\/docker.sock\r\n<\/pre>\n<p><u>For CLion<\/u><\/p>\n<ol>\n<li>\"Settings\" --> \"Build, Execution, Deployment\" --> \"Toolchains\"<\/li>\n<li>Change \"Docker for mac\" in \"Server\" settings<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Docker Engine &#8230; Client-server application Docker CLI Docker daemon (docker) (Docker REST API) (dockerd) Docker Desktop \/ OrbStack &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false},"categories":[82],"tags":[],"_links":{"self":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts\/18598"}],"collection":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=18598"}],"version-history":[{"count":23,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts\/18598\/revisions"}],"predecessor-version":[{"id":18631,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=\/wp\/v2\/posts\/18598\/revisions\/18631"}],"wp:attachment":[{"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=18598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=18598"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.max-sperling.bplaced.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=18598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}