Articles

Telepítés utáni lépések Linux esetén

becsült olvasási idő: 15 perc

Ez a szakasz opcionális eljárásokat tartalmaz a Linux gazdagépek konfigurálásához a workbetter-hez a Dockerrel.

A Docker kezelése nem root felhasználóként

a Docker démon egy Unix socket-hez kötődik a TCP-port helyett. Alapértelmezetthogy a Unix aljzat a felhasználó tulajdonában van root és más felhasználók csak a sudohasználatával férhetnek hozzá. A Docker démon mindig root felhasználóként fut.

Ha nem szeretné a dockerparancsot a sudoparanccsal előszavazni, hozzon létre egy Unixgroup nevű docker és adjon hozzá felhasználókat. Amikor a Docker démon elindul, létrehoz egy Unix socket-et, amely a docker csoport tagjai számára elérhető.

figyelem

adockerA csoport aroot felhasználóval egyenértékű jogosultságokat biztosít. A seedocker Daemon Attack Surface részletesen ismerteti, hogy ez hogyan befolyásolja a rendszer biztonságát.

Megjegyzés:

a Docker root jogosultságok nélküli futtatásához futtassa a Docker démont nem root felhasználóként (Root nélküli mód).

adocker csoport létrehozásához és a felhasználó hozzáadásához:

  1. hozza létre adocker csoportot.

    $ sudo groupadd docker

  2. adja hozzá a felhasználót adocker csoporthoz.

    $ sudo usermod -aG docker $USER

  3. jelentkezzen ki és jelentkezzen be újra, hogy a csoporttagsága újra értékelésre kerüljön.

    virtuális gépen történő tesztelés esetén szükség lehet a virtuális gép újraindítására, hogy a módosítások hatályba lépjenek.

    asztali Linux környezetben, mint például az X Windows, jelentkezzen ki teljesen a munkamenetből, majd jelentkezzen be újra.

    Linuxon a következő parancsot is futtathatja a csoportok módosításainak aktiválásához:

    $ newgrp docker 
  4. ellenőrizze, hogy futtatható-e dockerparancsok nélkül sudo.

    $ docker run hello-world

    Ez a parancs letölt egy tesztképet, és egy tárolóban futtatja. Amikor a container fut, kinyomtat egy információs üzenetet, és kilép.

    Ha a Docker CLI parancsokat eredetileg a sudo használatával futtatta, mielőtt hozzáadta felhasználóját a docker csoporthoz,a következő hiba jelenhet meg, amely azt jelzi, hogy a ~/.docker/ könyvtárat a sudo parancsok.

    WARNING: Error loading config file: /home/user/.docker/config.json -stat /home/user/.docker/config.json: permission denied

    a probléma megoldásához távolítsa el a~/.docker/ könyvtárat (automatikusan újra létrehozva, de minden egyéni beállítás elveszett), vagy változtassa meg a tulajdonosát és engedélyeit a következő parancsok segítségével:

    $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R$ sudo chmod g+rwx "$HOME/.docker" -R

A Docker konfigurálása indításkor

a legtöbb jelenlegi Linux disztribúció (RHEL, CentOS, Fedora, Debian, Ubuntu 16.04 andhigher) használja a systemd hogy kezelje, mely szolgáltatások mikor kezdődnek a rendszer indul. Debian és Ubuntu esetén a Docker szolgáltatás alapértelmezés szerint bootby-n indul. A Docker és a Containerd automatikus indításához a többi rendszerindító indításakor használja az alábbi parancsokat:

$ sudo systemctl enable docker.service$ sudo systemctl enable containerd.service

ennek a viselkedésnek a letiltásához használja a disable parancsot.

$ sudo systemctl disable docker.service$ sudo systemctl disable containerd.service

ha HTTP proxyt szeretne hozzáadni, állítson be egy másik könyvtárat vagy partíciót a Docker futásidejű fájlokhoz, vagy végezzen más testreszabásokat, nézze meg a systemd Docker démon beállításainak testreszabását.

használjon másik tárolómotort

a különböző tárolómotorokkal kapcsolatos információkért lásd: tárolómotorok.Az alapértelmezett tárolómotor és a támogatott tárolómotorok listája a gazdagép Linux disztribúciójától és az elérhető kernel-illesztőprogramoktól függ.

alapértelmezett naplózási illesztőprogram konfigurálása

a Docker lehetővé teszi a naplózási adatok gyűjtését és megtekintését a gazdagépen futó összes tárolóból egy sor naplózási illesztőprogram segítségével. Az alapértelmezett naplózási illesztőprogram, json-file, naplózási adatokat ír a JSON formátumú fájlokba a gazdagép fájlrendszerén. Idővel ezek a naplófájlok kibővülnekméretben, ami a lemez erőforrásainak kimerüléséhez vezet.

az ilyen problémák enyhítéséhez állítsa be a json-file naplózási illesztőprogramot a naplózási forgatáshoz, használjon analternatív naplózási illesztőprogramot, például a “helyi” naplózási illesztőprogramot, amely alapértelmezés szerint naplózást hajt végre, vagy használjon naplózási illesztőprogramot, amely naplókat küld egy távoli naplózási összesítőnek.

állítsa be, hogy a Docker démon hol figyeli a kapcsolatokat

alapértelmezés szerint a Docker démon figyeli a UNIX socket kapcsolatait, hogy elfogadja a helyi ügyfelek kéréseit. Lehetőség van arra, hogy a Docker fogadja requests from remote hosts konfigurálásával, hogy hallgatni egy IP-címet és portot, valamint a UNIX socket. A konfigurációs opcióval kapcsolatos részletesebb információkért tekintse meg a” Docker kötése egy másik gazdagéphez/porthoz vagy unix aljzathoz ” részt a Docker CLI referencia cikkben.

biztosítsa a kapcsolatot

mielőtt beállítaná a Docker-t a távoli gazdagépekről érkező kapcsolatok fogadására, rendkívül fontos, hogy megértse a Docker hálózatra történő megnyitásának biztonsági következményeit. Ha nem tesznek lépéseket a kapcsolat biztosítására, akkor a távoli, nem root felhasználók root hozzáférést szerezhetnek a gazdagépen. Ha többet szeretne tudni arról, hogyan használhatja a TLS-tanúsítványokat a kapcsolat biztosításához, olvassa el ezt a cikket a Docker démoncsatlakozó védelméről.

a Docker konfigurálása a távoli kapcsolatok elfogadására a docker.servicesystemd unit fájl a systemd-t használó Linux disztribúciókhoz, mint például a RedHat, CentOS, Ubuntu és SLES legújabb verziói, vagy a daemon.json fájl, amely a következő verziókhoz ajánlott Linux disztribúciók, amelyek nem használják systemd.

systemd vs démon.json

a Docker konfigurálása a kapcsolatok figyelésére mind asystemd egységfájl, mind adaemon.json fájl használatával ütközést okoz, amely megakadályozza a Docker indítását.

távoli hozzáférés konfigurálása a systemd egységfájllal

  1. használja a sudo systemctl edit docker.serviceparancsot a docker.service felülíró fájl megnyitásához egy szövegszerkesztőben.

  2. adja hozzá vagy módosítsa a következő sorokat, helyettesítve a saját értékeit.

    ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
  3. mentse a fájlt.

  4. töltse be újra a systemctl konfigurációt.

     $ sudo systemctl daemon-reload
  5. indítsa újra a dokkolót.

    $ sudo systemctl restart docker.service
  6. ellenőrizze, hogy a változtatást tiszteletben tartották-e a netstata dockerd kimenetének áttekintésével.

    $ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd

távoli hozzáférés konfigurálása démonnal.json

  1. állítsa be a hosts tömb a /etc/docker/daemon.json csatlakozni a UNIX socket és egy IP-címet, az alábbiak szerint:

    { "hosts": }

  2. indítsa újra a dokkolót.

  3. a netstatkimenetének áttekintésével ellenőrizze, hogy a változás tiszteletben volt-e tartva dockerd a dockerd a konfigurált porton hallgat.

    $ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd

IPv6 engedélyezése a Docker démonon

az IPv6 engedélyezéséhez a Docker démonon lásd: IPv6 támogatás.

hibaelhárítás

Kernel kompatibilitás

a Docker nem tud megfelelően futni, ha a kernel régebbi, mint a 3.10-es verzió, vagy ha hiányzik néhány modul. A kernel kompatibilitásának ellenőrzéséhez letöltheti ésfuttassa a check-config.sh szkriptet.

$ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh$ bash ./check-config.sh

A szkript csak Linuxon működik, macOS-on nem.

nem lehet csatlakozni a Docker démonhoz

Ha az alábbi hibaüzenet jelenik meg, előfordulhat, hogy a Docker kliens úgy van beállítva, hogy egy másik gazdagépen lévő Docker démonhoz csatlakozzon, és ez a gazdagép nem érhető el.

Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?

Ha meg szeretné tudni, hogy az ügyfél melyik gazdagéphez csatlakozik, ellenőrizze a DOCKER_HOST változó értékét a környezetében.

$ env | grep DOCKER_HOST

Ha ez a parancs értéket ad vissza, a Docker kliens úgy van beállítva, hogy csatlakozzon az adott gazdagépen futó aDocker démonhoz. Ha nincs beállítva, a Docker kliens be van állítvacsatlakozzon a helyi gazdagépen futó Docker démonhoz. Ha hibásan van beállítva,akkor a következő paranccsal szüntesse meg:

$ unset DOCKER_HOST

lehet, hogy szerkesztenie kell a környezetét olyan fájlokban, mint ~/.bashrc vagy~/.profile a ~/.profile a DOCKER_HOST változó attól, hogy seterroneous.

Ha a DOCKER_HOST a kívánt módon van beállítva, ellenőrizze, hogy a Docker démon fut-e a távoli gazdagépen, és hogy tűzfal vagy hálózati leállás nem akadályozza-e meg a csatlakozást.

IP-továbbítási problémák

ha manuálisan konfigurálja a hálózatot asystemd-networkasystemd 219-es vagy újabb verzióval, előfordulhat, hogy a Docker tárolók nem tudnak hozzáférni a hálózathoz.A systemd 220-as verziótól kezdve az adott hálózat továbbítási beállítása(net.ipv4.conf.<interface>.forwarding) alapértelmezés szerint ki. Ez a beállításmegakadályozza az IP-továbbítást. Ez ellentétes a Docker viselkedésével is, amely lehetővé teszi anet.ipv4.conf.all.forwarding beállítás tárolókon belül.

az RHEL, a CentOS vagy A Fedora megoldásához szerkessze a <interface>.networkfájlt a /usr/lib/systemd/network/ fájlban a Docker gazdagépen(pl.: /usr/lib/systemd/network/80-container-host0.network), majd adja hozzá a következő blokkot a szakasz.

...IPForward=kernel# ORIPForward=true

Ez a konfiguráció lehetővé teszi az IP továbbítását a tárolóból a várt módon.

DNS-feloldó található a resolv – ban.a conf és a tárolók nem tudják használni

a grafikus felhasználói felületet használó Linux rendszereken gyakran fut egy hálózatkezelő, amely egydnsmasq példányt használ, amely egy visszacsatolási címen fut, például 127.0.0.1 vagy127.0.1.1 a DNS-kérelmek gyorsítótárazásához, és hozzáadja ezt a bejegyzést adnsmasq. Adnsmasq szolgáltatás felgyorsítja a keresést, és DHCP szolgáltatásokat is nyújt. Ez a konfiguráció nem működik olyan Docker tárolóban, amelynek saját hálózati névtere van, mert a Docker tároló feloldja a visszacsatolási címeket, mint például 127.0.0.1, és nagyon valószínűtlen, hogy DNS-kiszolgálót futtat a saját visszacsatolási címén.

Ha a Docker azt észleli, hogy a /etc/resolv.conffájlban hivatkozott DNS-kiszolgáló nem teljesen működőképes DNS-kiszolgáló, a következő figyelmeztetés jelenik meg, és a Docker a Google által biztosított publicDNS-kiszolgálókat használja a 8.8.8.8és 8.8.4.4 címeken A DNS-felbontáshoz.

WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containerscan't use it. Using default external servers : 

Ha ezt a figyelmeztetést látja, először ellenőrizze, hogy használja-e a dnsmasq:

$ ps aux |grep dnsmasq

Ha a tárolónak fel kell oldania azokat a gazdagépeket, amelyek a hálózatod, a nyilvános névszerverek nem megfelelőek. Két lehetősége van:

  • megadhat egy DNS-kiszolgálót a Docker számára, vagy
  • letilthatja a dnsmasq a NetworkManager alkalmazásban. Ha ezt megteszi, NetworkManageradds a valódi DNS névszerver /etc/resolv.conf, de elveszíti thepossible előnyeit dnsmasq.

csak az egyik módszert kell használnia.

adja meg a Docker DNS-kiszolgálóit

a konfigurációs fájl alapértelmezett helye/etc/docker/daemon.json. Megváltoztathatja a konfigurációs fájl helyét a --config-filedémon jelzővel. Az alábbi dokumentáció feltételezi, hogy a konfigurációs fájl található /etc/docker/daemon.json.

  1. hozza létre vagy szerkessze a Docker démon konfigurációs fájlját, amely alapértelmezés szerint/etc/docker/daemon.json fájl, amely a Docker démonkonfigurációját vezérli.

    $ sudo nano /etc/docker/daemon.json
  2. adjon hozzá egy dns kulcsot egy vagy több IP-címmel értékként. Ha a fájl rendelkezikmeglévő tartalom, csak a dns sort kell hozzáadnia vagy szerkesztenie.

    { "dns": }

    Ha a belső DNS-kiszolgáló nem tudja feloldani a nyilvános IP-címeket, akkor legalább egy DNS-kiszolgálót adjon meg, amely képes, így csatlakozhat a Docker hubhoz, és így a tárolói meg tudják oldani az internetes domain neveket.

    mentse és zárja be a fájlt.

  3. indítsa újra a Docker démont.

    $ sudo service docker restart
  4. ellenőrizze, hogy a Docker képes-e feloldani a külső IP-címeket az animage lekérésével:

    $ docker pull hello-world
  5. ha szükséges, ellenőrizze, hogy a Docker tárolók képesek-e feloldani egy belső hostnametpingeléssel.

    $ docker run --rm -it alpine ping -c4 <my_internal_host>PING google.com (192.168.1.2): 56 data bytes64 bytes from 192.168.1.2: seq=0 ttl=41 time=7.597 ms64 bytes from 192.168.1.2: seq=1 ttl=41 time=7.635 ms64 bytes from 192.168.1.2: seq=2 ttl=41 time=7.660 ms64 bytes from 192.168.1.2: seq=3 ttl=41 time=7.677 ms

tiltsa le a dnsmasq

Ubuntu

Ha nem szeretné megváltoztatni a Docker démon konfigurációját egy adott IP cím használatához, kövesse ezeket az utasításokat a letiltáshoz dnsmasq a NetworkManager alkalmazásban.

  1. Szerkessze a/etc/NetworkManager/NetworkManager.conf fájlt.

  2. kommentálja adns=dnsmasq sort egy# karakter hozzáadásával a sor elejére.

    # dns=dnsmasq

    mentse és zárja be a fájlt.

  3. indítsa újra mind a NetworkManager, mind a Docker programot. Alternatív megoldásként újraindíthatjaa rendszered.

    $ sudo restart network-manager$ sudo restart docker

RHEL, CentOS, vagy Fedora

letiltani dnsmasq az RHEL, CentOS vagy Fedora rendszeren:

  1. letiltani a dnsmasq szolgáltatás:

    $ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq
  2. állítsa be a DNS-kiszolgálókat manuálisan a piros Hat dokumentációval.

Hozzáférés engedélyezése a távoli API-hoz tűzfalon keresztül

ha tűzfalat futtat ugyanazon a gazdagépen, mint a Docker,és egy másik gazdagépről szeretné elérni a Docker távoli API-t, és a távoli hozzáférés engedélyezve van, akkor be kell állítania a tűzfalat úgy, hogy engedélyezze a bejövő kapcsolatokat a Docker porton, amely alapértelmezés szerint 2376 ha a TLS titkosított átvitel engedélyezve van, vagy 2375egyébként.

két gyakori tűzfal démon areUFW (egyszerű tűzfal) (gyakran használják Ubuntu rendszerekhez) és firewalld (gyakran használják RPM-alapú rendszerekhez). Olvassa el az operációs rendszer és a tűzfal dokumentációját, de a következő információk segíthetnek az indulásban. Ezek az opciók meglehetősen megengedőek, és érdemes lehet egy másik konfigurációt használni, amely jobban lezárja a rendszert.

  • UFW: állítsa be aDEFAULT_FORWARD_POLICY="ACCEPT" beállítást.

  • firewalld: az alábbiakhoz hasonló szabályok hozzáadása a házirendhez (egy a bejövő kérésekre és egy a kimenő kérésekre). Győződjön meg róla, hogy az interfész neveiés a láncnevek helyesek.

    <direct> </direct>

A kernel nem támogatja a cgroup swap limit képességeket

Ubuntu vagy Debian gépeken a következőhöz hasonló üzeneteket láthat, amikor egy képpel dolgozik.

WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

Ez a figyelmeztetés nem fordul elő RPM-alapú rendszereken, amelyek alapértelmezés szerint engedélyezik ezeket a lehetőségeket.

ha nincs szüksége ezekre a képességekre, figyelmen kívül hagyhatja a figyelmeztetést. Ezen utasítások követésével engedélyezheti ezeket a képességeket Ubuntu vagy Debian rendszeren. Memoryand swap számviteli merülnek rezsi mintegy 1% – A a teljes rendelkezésre álló memoryand 10% – os teljes teljesítmény romlása, akkor is, ha Docker nem fut.

  1. jelentkezzen be az Ubuntu vagy Debian gazdagépbe felhasználókéntsudo jogosultságokkal.

  2. Szerkessze a/etc/default/grub fájlt. Adja hozzá vagy szerkessze a GRUB_CMDLINE_LINUX sort a következő két kulcs-érték pár hozzáadásához:

    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

    mentse és zárja be a fájlt.

  3. Grub frissítése.

    $ sudo update-grub

    Ha a GRUB konfigurációs fájlja helytelen szintaxissal rendelkezik, hiba történt occurs.In ebben az esetben ismételje meg a 2.és 3. lépést.

    a módosítások a rendszer újraindításakor lépnek hatályba.

  • vessen egy pillantást az első lépések képzési modulokra, hogy megtanulja, hogyan kell felépíteni egy képet, és futtatni egy konténeres alkalmazásként.
  • tekintse át a Develop with Docker témaköreit, hogy megtudja, hogyan lehet új alkalmazásokat építeni a Docker segítségével.

Docker, Docker dokumentáció, követelmények, apt, telepítés, ubuntu, telepítés, eltávolítás, frissítés, frissítés