Docker and docker Server mismatch (Cgroups problems)

Hello,

i am relatively new to this and i’m having a problem with a new install of docker,

when i try to run for example docker run hello-world , i get an error:

# docker run hello-world
docker: Error response from daemon: cgroups: cgroup mountpoint does not exist: unknown.

from what i found, this is because my system uses cgroups v2, but docker 20.10 is supposed to support it.

when i run docker -version :

# docker --version
Docker version 20.10.7, build f0df350

So i should be good, then i found docker info that shows you server version and cgroup driver, that for cgroup v2 should look like this:

# docker info 
(...)
Server Version: 20.10.0  
Storage Driver: fuse-overlayfs  
Logging Driver: json-file  
Cgroup Driver: systemd  
Cgroup Version: 2 
(...)

but when i run it:

# docker info
(...)
 Server Version: 19.03.13
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
(...)

I do not have the correct Cgroup Driver, Cgroup version does not even exist, i can not find a reason for this online, but i think that having docker 20.10 and my server version is 19.03 is causing the problem, this was a machine that did not had any previous docker installed, so the 20.10 install for some reason used a 19.03 server version. (why??)

I am not sure if this will fix may problems with Cgroups, but how can i update the server version to 20.10?

Thanks

Please share the exact(!) commands you used to installed docker. (hint: please do not share a link to docs/blogposts, I realy want to specificly see the commands you used).
Also I am currious what the ouput of sudo docker version look like on your installation…

Also posted on Reddit (no responses, yet).

Solved.

Turns out the “fresh” install was not that fresh, someone tried to install docker via snap, and when i run

sudo apt-get remove docker docker-engine docker.io containerd runc

gave me that there was nothing installed, so i just follow exactly what was on the official page to install it.

the wierd part that generated all my confusion was that when i realized something was wrong i run which docker and it was pointing to my install, but the docker run hello-world was pointing to the snap installation.

so i removed all installations and surprise it worked!!

Just wierd that which was not pointing to the docker installation it was using, but maybe it is just my lack of experience with linux, and i am sure that docker -v returned the correct version…

Anyways thanks =)

1 Like

The problem is that there are two versions of cgroup - v1 and v2 - which are incompatible. Linux distributions (probably in the meantime all of them) switched to v2 as default. E.g. Debian since 11. On the other side Docker supports cgroup v2 since v20.10. Using an older Docker version (like in my case it was 19.03.13) on a news OS (Debian 12) leads to the cgroup-error.

See Runime metrics for the version stuff.

In general v1 and v2 can coexist on your OS. So in some forums you can see workarounds like this:

# mkdir /sys/fs/cgroup/systemd
# mount mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd

Which somehow “solves” the problem. In fact the mountpoint is arbitratry, /cgroup_mountpoint instead of /sys/fs/cgroup/systemd works the same.

So the solution is: check your OS’ cgroup version and make sure your Docker version supports it.

To check your OS’ cgroup version just use mount | cgroup and check if you get cgroup2.