docker-documentation/FAQ/index.html

47 wiersze
91 KiB
HTML
Czysty Zwykły widok Historia

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Welcome to the home of the LinuxServer.io documentation!"><meta name=author content=LinuxServer.io><link href=https://docs.linuxserver.io/FAQ/ rel=canonical><link href=../API/ rel=prev><link href=../misc/finances/ rel=next><link rel=icon href=../assets/favicon.ico><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.5.50"><title>Frequently Asked Questions - LinuxServer.io</title><link rel=stylesheet href=../assets/stylesheets/main.a40c8224.min.css><link rel=stylesheet href=../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../stylesheets/extra.css><link rel=stylesheet href=../assets/stylesheets/mkdocs_d2_plugin.css><script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=purple data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#frequently-asked-questions class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=.. title=LinuxServer.io class="md-header__button md-logo" aria-label=LinuxServer.io data-md-component=logo> <img src=../assets/icon.svg alt=logo> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> LinuxServer.io </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Frequently Asked Questions </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=purple data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=purple data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.col
</span></code></pre></div> <p>Or</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a>Failed to create CoreCLR, HRESULT: 0x80070008
</span></code></pre></div> <p>Or</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a>WARNING :: MAIN : webStart.py:initialize:249 : can&#39;t start new thread
</span></code></pre></div> </div> <div class=tabbed-block> <p><h4>Long-Term Fix</h4></p> <p>Upgrade your Docker engine to at least version <code>20.10.10</code>. <a href=https://docs.docker.com/engine/install>Refer to the official Docker docs for installation/update details.</a></p> <p><h4>Short-Term Fix</h4></p> <p>For Docker CLI, run your container with:</p> <p><code>--security-opt seccomp=unconfined</code></p> <p>For Docker Compose, run your container with:</p> <div class="language-yaml highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=nt>security_opt</span><span class=p>:</span>
</span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a><span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">seccomp=unconfined</span>
</span></code></pre></div> </div> </div> </div> </details> <details class=faq> <summary>My host is incompatible with images based on rdesktop</summary> <h5 id=rdesktop>My host is incompatible with images based on rdesktop<a class=headerlink href=#rdesktop title="Permanent link">&para;</a></h5> <div class="tabbed-set tabbed-alternate" data-tabs=2:3><input checked=checked id=rdesktop-description name=__tabbed_2 type=radio><input id=rdesktop-symptoms name=__tabbed_2 type=radio><input id=rdesktop-resolution name=__tabbed_2 type=radio><div class=tabbed-labels><label for=rdesktop-description>Description</label><label for=rdesktop-symptoms>Symptoms</label><label for=rdesktop-resolution>Resolution</label></div> <div class=tabbed-content> <div class=tabbed-block> <p>Some x86_64 hosts have issues running rdesktop based images even with the latest Docker version due to syscalls that are unknown to Docker.</p> </div> <div class=tabbed-block> <p>If your host is affected you may see errors in your containers such as:</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a>Failed to close file descriptor for child process (Operation not permitted)
</span></code></pre></div> </div> <div class=tabbed-block> <p>For Docker CLI, run your container with:</p> <p><code>--security-opt seccomp=unconfined</code></p> <p>For Docker Compose, run your container with:</p> <div class="language-yaml highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a><span class=w> </span><span class=nt>security_opt</span><span class=p>:</span>
</span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">seccomp=unconfined</span>
</span></code></pre></div> </div> </div> </div> </details> <details class=faq> <summary>My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later</summary> <h5 id=libseccomp>My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later<a class=headerlink href=#libseccomp title="Permanent link">&para;</a></h5> <div class="tabbed-set tabbed-alternate" data-tabs=3:3><input checked=checked id=libseccomp-description name=__tabbed_3 type=radio><input id=libseccomp-symptoms name=__tabbed_3 type=radio><input id=libseccomp-resolution name=__tabbed_3 type=radio><div class=tabbed-labels><label for=libseccomp-description>Description</label><label for=libseccomp-symptoms>Symptoms</label><label for=libseccomp-resolution>Resolution</label></div> <div class=tabbed-content> <div class=tabbed-block> <p>This only affects 32 bit installs of distros based on Debian Buster.</p> <p>This is due to a bug in the libseccomp2 library (dependency of Docker itself), which is fixed. However, it's not pushed to all the repositories.</p> <p><a href=https://github.com/moby/moby/issues/40734>A GitHub issue tracking this</a></p> <p>You have a few options as noted below. Options 1 is short-term, while option 2 is considered the best option if you don't plan to reinstall the device (option 3).</p> </div> <div class=tabbed-block> <ul> <li>502 errors in <strong>Jellyfin</strong> as seen in <a href=https://github.com/linuxserver/docker-jellyfin/issues/71>linuxserver/docker-jellyfin#71</a></li> <li><code>Error starting framework core</code> messages in the docker log for <strong>Plex</strong>. <a href=https://github.com/linuxserver/docker-plex/issues/247>linuxserver/docker-plex#247</a></li> <li>No WebUI for <strong>Radarr</strong>, even though the container is running. <a href=https://github.com/linuxserver/docker-radarr/issues/118>linuxserver/docker-radarr#118</a></li> <li>Images based on our Nginx base-image(Nextcloud, SWAG, Nginx, etc.) fails to generate a certificate, with a message similar to <code>error getting time:crypto/asn1/a_time.c:330</code></li> <li><code>docker exec &lt;container-name&gt; date</code> returns 1970</li> </ul> </div> <div class=tabbed-block> <p>If you decide to do option 1 or 2, you should just need to restart the container after confirming you have libseccomp2.4.4 installed.</p> <p>If 1 or 2 did not work, ensure your Docker install is at least version 20.10.0, <a href=https://docs.docker.com/engine/install/debian/ >refer to the official Docker docs for installation.</a></p> <p><h4>Manual patch</h4></p> <p>Manually install an updated version of the library with dpkg.</p> <div class="language-shell highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a>wget<span class=w> </span>http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb
</span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a>sudo<span class=w> </span>dpkg<span class=w> </span>-i<span class=w> </span>libseccomp2_2.4.4-1~bpo10+1_armhf.deb
</span></code></pre></div> <div class="admonition info"> <p class=admonition-title>Info</p> <p>This url may have been updated. Find the latest by browsing <a href=http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/ >here</a>.</p> </div> <p><h4>Automatic Patch</h4></p> <p>Add the backports repo for DebianBuster. As seen <a href=https://github.com/linuxserver/docker-jellyfin/issues/71#issuecomment-733621693>here</a>.</p> <div class="language-shell highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a>sudo<span class=w> </span>apt-key<span class=w> </span>adv<span class=w> </span>--keyserver<span class=w> </span>keyserver.ubuntu.com<span class=w> </span>--recv-keys<span class=w> </span>04EE7237B7D453EC<span class=w> </span>648ACFD622F3D138
</span><span id=__span-7-2><a id=__codelineno-7-2 name=__codelineno-7-2 href=#__codelineno-7-2></a><span class=nb>echo</span><span class=w> </span><span class=s2>&quot;deb http://deb.debian.org/debian buster-backports main&quot;</span><span class=w> </span><span class=p>|</span><span class=w> </span>sudo<span class=w> </span>tee<span class=w> </span>-a<span class=w> </span>/etc/apt/sources.list.d/buster-backports.list
</span><span id=__span-7-3><a id=__codelineno-7-3 name=__codelineno-7-3 href=#__codelineno-7-3></a>sudo<span class=w> </span>apt<span class=w> </span>update
</span><span id=__span-7-4><a id=__codelineno-7-4 name=__codelineno-7-4 href=#__codelineno-7-4></a>sudo<span class=w> </span>apt<span class=w> </span>install<span class=w> </span>-t<span class=w> </span>buster-backports<span class=w> </span>libseccomp2
</span></code></pre></div> <p><h4>Move to a compatible OS</h4></p> <p>Reinstall/update your OS to a version that still gets updates.</p> <ul> <li>Any distro based on DebianStretch does not seem to have this package available</li> <li>DebianBuster based distros can get the package trough backports, as outlined in point 2.</li> </ul> <div class="admonition info"> <p class=admonition-title>Info</p> <p>RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel</p> </div> </div> </div> </div> </details> <details class=faq> <summary>My host filesystem is incompatible with my docker storage driver</summary> <h5 id=storage>My host filesystem is incompatible with my docker storage driver<a class=headerlink href=#storage title="Permanent link">&para;</a></h5> <div class="tabbed-set tabbed-alternate" data-tabs=4:3><input checked=checked id=storage-description name=__tabbed_4 type=radio><input id=storage-symptoms name=__tabbed_4 type=radio><input id=storage-resolution name=__tabbed_4 type=radio><div class=tabbed-labels><label for=storage-description>Description</label><label for=storage-symptoms>Symptoms</label><label for=storage-resolution>Resolution</label></div> <div class=tabbed-content> <div class=tabbed-block> <p>Some host file systems types are not compatible with the default storage driver of docker (overlay2)</p> </div> <div class=tabbed-block> <p>If your host is affected you may see errors in your containers such as:</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a>ERROR Found no accessible config files
</span></code></pre></div> <p>or</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-9-1><a id=__codelineno-9-1 name=__codelineno-9-1 href=#__codelineno-9-1></a>Directory not empty. This directory contains an empty ignorecommands sub-directory
</span></code></pre></div> </div> <div class=tabbed-block> <p>As shown in <a href=https://docs.docker.com/storage/storagedriver/select-storage-driver/#supported-backing-filesystems>Docker docs</a></p> <p>A host filesystem of zfs requires a docker storage driver of zfs and a host file system of btrfs requires a docker storage driver of btrfs. Correcting this oversight will resolve the issue. This is not something that a container change will resolve.</p> </div> </div> </div> </details> <details class=faq> <summary>What is lscr.io</summary> <h5 id=lscr>What is lscr.io<a class=headerlink href=#lscr title="Permanent link">&para;</a></h5> <p>LSCR is a vanity url for our images, this is provided to us in collaboration with <a href=https://about.scarf.sh/ >scarf.sh</a>. It is not a dedicated docker registry, rather a redirection service. As of writing it redirects to GitHub Container Registry (ghcr.io).</p> <p>Aside from giving us the ability to redirect to another backend, if necessary, it also exposes telemetry about pulls, historically only available to the backend provider. We base some decisions on this data, as it gives us a somewhat realistic usage overview (relative to just looking at pulls on DockerHub).</p> <p>We have some blog posts related to how we utilize Scarf:</p> <ul> <li><a href=https://www.linuxserver.io/blog/end-of-an-arch>End of an Arch</a></li> <li><a href=https://www.linuxserver.io/blog/unravelling-some-stats>Unravelling Some Stats</a></li> <li><a href=https://www.linuxserver.io/blog/wrap-up-warm-for-the-winter>Wrap Up Warm For Winter</a></li> </ul> </details> <details class=faq> <summary>I cannot connect to lscr.io</summary> <h5 id=lscr-no-connect>I cannot connect to lscr.io<a class=headerlink href=#lscr-no-connect title="Permanent link">&para;</a></h5> <p>Due to the nature of Scarf as a Docker gateway which gathers usage metrics, some overzealous privacy-focused blocklists will include its domains.</p> <p>If you want to help us in getting a better overview of how people use our containers, you should add <code>gateway.scarf.sh</code> to the allowlist in your blocklist solution.</p> <p>Alternatively, you can use Docker Hub or GHCR directly to pull your images, although be aware that all public registries gather user metrics, so this doesn't provide you with any real benefit in that area.</p> <p>If Scarf is on the blocklist, you will get an error message like this when trying to pull an image:</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-10-1><a id=__codelineno-10-1 name=__codelineno-10-1 href=#__codelineno-10-1></a>Error response from daemon: Get &quot;https://lscr.io/v2/&quot;: dial tcp: lookup lscr.io: no such host
</span></code></pre></div> <p>This is, however, a generic message. To rule out a service-interruption, you should also see if you can resolve the backend provider.</p> <p>Using dig:</p> <div class="language-shell highlight"><pre><span></span><code><span id=__span-11-1><a id=__codelineno-11-1 name=__codelineno-11-1 href=#__codelineno-11-1></a>dig<span class=w> </span>ghcr.io<span class=w> </span>+short
</span><span id=__span-11-2><a id=__codelineno-11-2 name=__codelineno-11-2 href=#__codelineno-11-2></a>dig<span class=w> </span>lscr.io<span class=w> </span>+short
</span></code></pre></div> <p>Using nslookup:</p> <div class="language-shell highlight"><pre><span></span><code><span id=__span-12-1><a id=__codelineno-12-1 name=__codelineno-12-1 href=#__codelineno-12-1></a>nslookup<span class=w> </span>ghcr.io
</span><span id=__span-12-2><a id=__codelineno-12-2 name=__codelineno-12-2 href=#__codelineno-12-2></a>nslookup<span class=w> </span>lscr.io
</span></code></pre></div> <p>If you only got a response from ghcr, chances are that Scarf is on the blocklist.</p> </details> <details class=faq> <summary>I want to reverse proxy an application which defaults to https with a self-signed certificate</summary> <h5 id=strict-proxy>I want to reverse proxy an application which defaults to https with a self-signed certificate<a class=headerlink href=#strict-proxy title="Permanent link">&para;</a></h5> <div class="tabbed-set tabbed-alternate" data-tabs=5:1><input checked=checked id=strict-proxy-traefik name=__tabbed_5 type=radio><div class=tabbed-labels><label for=strict-proxy-traefik>Traefik</label></div> <div class=tabbed-content> <div class=tabbed-block> <p>In this example, we will configure a serverTransport rule we can apply to a service, as well as telling Traefik to use https on the backend for the service.</p> <p>Create a <a href=https://doc.traefik.io/traefik/routing/services/#serverstransport_1>ServerTransport</a> in your dynamic Traefik configuration; we are calling ours <code>ignorecert</code>.</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-13-1><a id=__codelineno-13-1 name=__codelineno-13-1 href=#__codelineno-13-1></a> http:
</span><span id=__span-13-2><a id=__codelineno-13-2 name=__codelineno-13-2 href=#__codelineno-13-2></a> serversTransports:
</span><span id=__span-13-3><a id=__codelineno-13-3 name=__codelineno-13-3 href=#__codelineno-13-3></a> ignorecert:
</span><span id=__span-13-4><a id=__codelineno-13-4 name=__codelineno-13-4 href=#__codelineno-13-4></a> insecureSkipVerify: true
</span></code></pre></div> <p>Then on our <code>foo</code> service we tell it to use this rule, as well as telling Traefik the backend is running on https.</p> <div class="language-text highlight"><pre><span></span><code><span id=__span-14-1><a id=__codelineno-14-1 name=__codelineno-14-1 href=#__codelineno-14-1></a> - traefik.http.services.foo.loadbalancer.serverstransport=ignorecert@file
</span><span id=__span-14-2><a id=__codelineno-14-2 name=__codelineno-14-2 href=#__codelineno-14-2></a> - traefik.http.services.foo.loadbalancer.server.scheme=https
</span></code></pre></div> </div> </div> </div> </details> <details class=faq> <summary>Why does LinuxServer.io recommend to use docker-compose over Portainer?</summary> <h5 id=portainer>Why does LinuxServer.io recommend to use docker-compose over Portainer?<a class=headerlink href=#portainer title="Permanent link">&para;</a></h5> <p>Portainer has many issues which make it hard for us to support, such as:</p> <ul> <li>Advanced settings are hidden and some aren't available at all</li> <li>Incorrect order of source and target of mounts</li> <li>Inconsistent case-sensitivity</li> <li>No automatically created custom networks for inter-container communication</li> <li>Inconsistent compose implementations on different architectures</li> <li>Incorrectly applying environment variables on container upgrades</li> </ul> </details> <details class=faq> <summary>Inexplicable issues when running ubuntu</summary> <h5 id=snap>Inexplicable issues when running ubuntu<a class=headerlink href=#snap title="Permanent link">&para;</a></h5> <div class="tabbed-set tabbed-alternate" data-tabs=6:3><input checked=checked id=snap-description name=__tabbed_6 type=radio><input id=snap-symptoms name=__tabbed_6 type=radio><input id=snap-resolution name=__tabbed_6 type=radio><div class=tabbed-labels><label for=snap-description>Description</label><label for=snap-symptoms>Symptoms</label><label for=snap-resolution>Resolution</label></div> <div class=tabbed-content> <div class=tabbed-block> <p>Many users have been facing issues that are simply inexplicable. The logs show no problems, the compose is fine, eventually it turns out they've installed the SNAP version of docker which is the source of the issues.</p> </div> <div class=tabbed-block> <p>It's difficult to identify the symptoms, but if you are running ubuntu and believe you have done everything correctly, check for SNAP docker.</p> </div> <div class=tabbed-block> <p>First the user must be on an appropriate version of ubuntu to face this issue (as far as I am aware)</p> <p><code>lsb_release -a</code> would result in something similar to the below output <div class="language-bash highlight"><pre><span></span><code><span id=__span-15-1><a id=__codelineno-15-1 name=__codelineno-15-1 href=#__codelineno-15-1></a>No<span class=w> </span>LSB<span class=w> </span>modules<span class=w> </span>are<span class=w> </span>available.
</span><span id=__span-15-2><a id=__codelineno-15-2 name=__codelineno-15-2 href=#__codelineno-15-2></a>Distributor<span class=w> </span>ID:<span class=w> </span>Ubuntu
</span><span id=__span-15-3><a id=__codelineno-15-3 name=__codelineno-15-3 href=#__codelineno-15-3></a>Description:<span class=w> </span>Ubuntu<span class=w> </span><span class=m>22</span>.04.3<span class=w> </span>LTS
</span><span id=__span-15-4><a id=__codelineno-15-4 name=__codelineno-15-4 href=#__codelineno-15-4></a>Release:<span class=w> </span><span class=m>22</span>.04
</span><span id=__span-15-5><a id=__codelineno-15-5 name=__codelineno-15-5 href=#__codelineno-15-5></a>Codename:<span class=w> </span>jammy
</span></code></pre></div></p> <p><code>snap list | grep docker</code> would result in something similar to the below output <div class="language-bash highlight"><pre><span></span><code><span id=__span-16-1><a id=__codelineno-16-1 name=__codelineno-16-1 href=#__codelineno-16-1></a>docker<span class=w> </span><span class=m>20</span>.10.24<span class=w> </span><span class=m>2904</span><span class=w> </span>latest/stable<span class=w> </span>canonical**<span class=w> </span>-
</span></code></pre></div></p> <p>This means the snap version of docker is installed. Unfortunately, even if the user installed docker from the proper repo, this snap version will coexist AND be preferred. They will need to remove it, as shown below.</p> <div class="language-bash highlight"><pre><span></span><code><span id=__span-17-1><a id=__codelineno-17-1 name=__codelineno-17-1 href=#__codelineno-17-1></a>oliver@home-server:~/plexDockerImage$<span class=w> </span>sudo<span class=w> </span>snap<span class=w> </span>remove<span class=w> </span>docker
</span><span id=__span-17-2><a id=__codelineno-17-2 name=__codelineno-17-2 href=#__codelineno-17-2></a><span class=o>[</span>sudo<span class=o>]</span><span class=w> </span>password<span class=w> </span><span class=k>for</span><span class=w> </span>oliver:
</span><span id=__span-17-3><a id=__codelineno-17-3 name=__codelineno-17-3 href=#__codelineno-17-3></a><span class=m>2023</span>-11-15T01:06:26Z<span class=w> </span>INFO<span class=w> </span>Waiting<span class=w> </span><span class=k>for</span><span class=w> </span><span class=s2>&quot;snap.docker.dockerd.service&quot;</span><span class=w> </span>to<span class=w> </span>stop.
</span><span id=__span-17-4><a id=__codelineno-17-4 name=__codelineno-17-4 href=#__codelineno-17-4></a>docker<span class=w> </span>removed
</span><span id=__span-17-5><a id=__codelineno-17-5 name=__codelineno-17-5 href=#__codelineno-17-5></a>oliver@home-server:~/plexDockerImage$
</span></code></pre></div> <div class="admonition info"> <p class=admonition-title>Info</p> <p>Unless automatic snapshots are disabled, a snapshot of all data for the snap is saved upon removal, which is then available for future restoration with snap restore. The --purge option disables automatically creating snapshots.</p> </div> <p>Following this, confirm nothing related to snap still shows. <div class="language-bash highlight"><pre><span></span><code><span id=__span-18-1><a id=__codelineno-18-1 name=__codelineno-18-1 href=#__codelineno-18-1></a>~$<span class=w> </span>sudo<span class=w> </span>whereis<span class=w> </span>docker
</span><span id=__span-18-2><a id=__codelineno-18-2 name=__codelineno-18-2 href=#__codelineno-18-2></a>docker:<span class=w> </span>/usr/libexec/docker
</span></code></pre></div> above is what we might want to see, below is how it would look if both official AND snap are installed. Seeing the snap stuff removed but the official there is OK. <div class="language-bash highlight"><pre><span></span><code><span id=__span-19-1><a id=__codelineno-19-1 name=__codelineno-19-1 href=#__codelineno-19-1></a>~$<span class=w> </span>sudo<span class=w> </span>whereis<span class=w> </span>docker
</span><span id=__span-19-2><a id=__codelineno-19-2 name=__codelineno-19-2 href=#__codelineno-19-2></a>
</span><span id=__span-19-3><a id=__codelineno-19-3 name=__codelineno-19-3 href=#__codelineno-19-3></a>docker:<span class=w> </span>/usr/bin/docker<span class=w> </span>/etc/docker<span class=w> </span>/usr/libexec/docker<span class=w> </span>/snap/bin/docker.machine<span class=w> </span>/snap/bin/docker.help<span class=w> </span>/snap/bin/docker.compose<span class=w> </span>/snap/bin/docker<span class=w> </span>/usr/share/man/man1/docker.1.gz
</span></code></pre></div> As you can see in the second one, multiple versions can coexist which is a big tshoot problem.</p> <p>Once this is complete, if the expected version isn't present, simply follow <a href=https://docs.docker.com/engine/install/ubuntu/ >docker install on ubuntu</a></p> <p>When they finish, running <code>docker</code> commands may result in <code>-bash: /snap/bin/docker: No such file or directory</code> if this is the case, this is simply a shell patch issue, they can launch a new shell or simply input <code>hash -r</code> which should resolve the problem. Version info at the time of this writing should be <div class="language-bash highlight"><pre><span></span><code><span id=__span-20-1><a id=__codelineno-20-1 name=__codelineno-20-1 href=#__codelineno-20-1></a>~<span class=w> </span><span class=c1># docker --version &amp;&amp; docker compose version</span>
</span><span id=__span-20-2><a id=__codelineno-20-2 name=__codelineno-20-2 href=#__codelineno-20-2></a>Docker<span class=w> </span>version<span class=w> </span><span class=m>24</span>.0.7,<span class=w> </span>build<span class=w> </span>afdd53b
</span><span id=__span-20-3><a id=__codelineno-20-3 name=__codelineno-20-3 href=#__codelineno-20-3></a>Docker<span class=w> </span>Compose<span class=w> </span>version<span class=w> </span>v2.21.0
</span></code></pre></div></p> </div> </div> </div> </details> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 5, 2025</span> </span> <span class=md-source-file__fact> <span class=md-icon title=Created> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M14.47 15.08 11 13V7h1.5v5.25l3.08 1.83c-.41.28-.79.62-1.11 1m-1.39 4.84c-.36.05-.71.08-1.08.08-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8c0 .37-.03.72-.08 1.08.69.1 1.33.32 1.92.64.1-.56.16-1.13.16-1.72 0-5.5-4.5-10-10-10S2 6.5 2 12s4.47 10 10 10c.59 0 1.16-.06 1.72-.16-.32-.59-.54-1.23-.64-1.92M18 15v3h-3v2h3v3h2v-3h3v-2h-3v-3z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">November 28, 2022</span> </span> </aside> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=../API/ class="md-footer__link md-footer__link--prev" aria-label="Previous: API"> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class=md-footer__title> <span class=md-footer__direction> Previous </span> <div class=md-ellipsis> API </div> </div> </a> <a href=../misc/finances/ class="md-footer__link md-footer__link--next" aria-label="Next: Finances"> <div class=md-footer__title> <span class=md-footer__direction> Next </span> <div class=md-ellipsis> Finances </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright &copy; 2025 LinuxServer.io </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://linuxserver.io target=_blank rel=noopener title=linuxserver.io class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 640 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="m181.5 197.1 12.9 6.4c5.9 3 12.4 4.5 19.1 4.5 23.5 0 42.6-19.1 42.6-42.6V144c0-35.3-28.7-64-64-64h-64c-35.3 0-64 28.7-64 64v21.4c0 23.5 19.1 42.6 42.6 42.6 6.6 0 13.1-1.5 19.1-4.5l12.9-6.4 8.4-4.2-12-7.9c-4.5-3-7.1-8-7.1-13.3V168c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v3.7c0 5.3-2.7 10.3-7.1 13.3l-11.8 7.9zm-8.6 49.4L160 240l-12.9 6.4c-12.6 6.3-26.5 9.6-40.5 9.6-3.6 0-7.1-.2-10.6-.6v.6c0 35.3 28.7 64 64 64h64c17.7 0 32 14.3 32 32s-14.3 32-32 32h160v-64c0-23.7 12.9-44.4 32-55.4 9.4-5.4 20.3-8.6 32-8.6v-16c0-26.5 21.5-48 48-48 8.8 0 16 7.2 16 16v96c0 8.8 7.2 16 16 16s16-7.2 16-16v-99.7c0-48.2-30.8-91-76.6-106.3l-8.5-2.8c-8-2.7-12.6-11.1-10.4-19.3s10.3-13.2 18.6-11.6l19.9 4c89 17.8 153 95.9 153 186.6v1.1c0 123.7-100.3 224-224 224H255.4C132 480 32 380 3