Uživatelské nástroje

Nástroje pro tento web


navody:vps:vpsadminos:docker

Docker na vpsAdminOS

Na vpsAdminOS je funkční Docker v aktuální verzi.

Na OpenVZ VPS s OpenVZ Docker v aktuální verzi funkční není.

Instalace

Docker instalujte z repozitářů na docker.com, nedoporučujeme používat Docker z distribučních repozitářů, protože bývá starší a můžou tam mít nějaké patche navíc. Instalujte podle návodu:

Fungovat mohou samozřejmě i jiné distribuce, ale uvádíme jen ty, které jsme testovali.

Ubuntu 18.04 LTS

apt-get -y update 
apt-get -y install apt-transport-https ca-certificates curl software-properties-common 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" 
apt-get -y update 
apt-get -y install docker-ce 

Fedora 33

Upstream verzi Dockeru moby-engine nainštalujete priamo z oficiálnych repozitárov distribúcie:

dnf install -y moby-engine

Je potrebné nakonfigurovať dockerd daemona aby bežal s cgroupdriver=cgroupfs, inak narazite na nasledujúci problém:

$ docker run hello-world
docker: Error response from daemon: OCI runtime create failed: cgroup v2 not enabled on this host, can't use systemd (rootless) as cgroups manager: unknown.

Konfiguráciu cgroup driveru je možné previesť pomocou overridu ExecStart pre docker.service:

$ systemctl edit docker
ExecStart=/usr/bin/dockerd \
          --host=fd:// \
          --exec-opt native.cgroupdriver=cgroupfs \
          $OPTIONS

Všeobecně

Ověříme, zda běží docker v pořádku:

systemctl status docker.service

● docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: e
    Active: active (running) since Sun 2020-02-23 14:55:22 UTC; 9s ago
      Docs: https://docs.docker.com
  Main PID: 2893 (dockerd)
     Tasks: 30
    CGroup: /system.slice/docker.service
            └─2893 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/contain

Pokud nenaběhne docker.service, může se jednat o tento už opravený bug v containerd. Řešením je buď nahradit /sbin/modprobe, nebo upravit containerd.service a změnit volbu ExecStartPre.

mv /sbin/modprobe /sbin/modprobe.old && ln -s /bin/true /sbin/modprobe

Nyní můžete zkusit docker run hello-world:

docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
[...]

Networking otestujeme pomocí:

docker run -it alpine ping -c 3 vpsfree.cz

Docker-in-Docker

Docker-in-Docker samo od sebe nefunguje, protože se Docker snaží připojit /sys/kernel/security, což ve VPS nemá oprávnění udělat kvůli omezení kernelu. Lze to jednoduše obejít bind-mountem pomocí volume:

docker run -v /sys/kernel/security:/sys/kernel/security ...

Hlášení chyb

Pokud nějaká operace hlásí permission denied, pravděpodobně není povolená v AppArmor profilu. To můžeme napravit, nicméně potřebujeme mít možnost to reprodukovat a vědět ID VPS. Stavte se na IRC #vpsfree nebo #vpsadminos, případně pište na podporu.

navody/vps/vpsadminos/docker.txt · Poslední úprava: 2020/10/24 22:53 autor: tbabej