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 konfigurálása indításkor
- használjon másik tárolómotort
- alapértelmezett naplózási illesztőprogram konfigurálása
- állítsa be, hogy a Docker démon hol figyeli a kapcsolatokat
- távoli hozzáférés konfigurálása a systemd egységfájllal
- távoli hozzáférés konfigurálása démonnal.json
- IPv6 engedélyezése a Docker démonon
- hibaelhárítás
- Kernel kompatibilitás
- nem lehet csatlakozni a Docker démonhoz
- IP-továbbítási problémák
- DNS-feloldó található a resolv – ban.a conf és a tárolók nem tudják használni
- adja meg a Docker DNS-kiszolgálóit
- tiltsa le a dnsmasq
- Ubuntu
- RHEL, CentOS, vagy Fedora
- Hozzáférés engedélyezése a távoli API-hoz tűzfalon keresztül
- A kernel nem támogatja a cgroup swap limit képességeket
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 sudo
használatával férhetnek hozzá. A Docker démon mindig root
felhasználóként fut.
Ha nem szeretné a docker
parancsot a sudo
paranccsal 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
a
docker
A 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:
-
hozza létre a
docker
csoportot.$ sudo groupadd docker
-
adja hozzá a felhasználót a
docker
csoporthoz.$ sudo usermod -aG docker $USER
-
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
-
ellenőrizze, hogy futtatható-e
docker
parancsok nélkülsudo
.$ 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 adocker
csoporthoz,a következő hiba jelenhet meg, amely azt jelzi, hogy a~/.docker/
könyvtárat asudo
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.service
systemd 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 a
systemd
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
-
használja a
sudo systemctl edit docker.service
parancsot adocker.service
felülíró fájl megnyitásához egy szövegszerkesztőben. -
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
-
mentse a fájlt.
-
töltse be újra a
systemctl
konfigurációt.$ sudo systemctl daemon-reload
-
indítsa újra a dokkolót.
$ sudo systemctl restart docker.service
-
ellenőrizze, hogy a változtatást tiszteletben tartották-e a
netstat
adockerd
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
-
á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": }
-
indítsa újra a dokkolót.
-
a
netstat
kimenetének áttekintésével ellenőrizze, hogy a változás tiszteletben volt-e tartvadockerd
adockerd
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-network
asystemd
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>.network
fá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.conf
fá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őnyeitdnsmasq
.
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-file
démon jelzővel. Az alábbi dokumentáció feltételezi, hogy a konfigurációs fájl található /etc/docker/daemon.json
.
-
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
-
adjon hozzá egy
dns
kulcsot egy vagy több IP-címmel értékként. Ha a fájl rendelkezikmeglévő tartalom, csak adns
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.
-
indítsa újra a Docker démont.
$ sudo service docker restart
-
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
-
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.
-
Szerkessze a
/etc/NetworkManager/NetworkManager.conf
fájlt. -
kommentálja a
dns=dnsmasq
sort egy#
karakter hozzáadásával a sor elejére.# dns=dnsmasq
mentse és zárja be a fájlt.
-
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:
-
letiltani a
dnsmasq
szolgáltatás:$ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq
-
á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 2375
egyé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 a
DEFAULT_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.
-
jelentkezzen be az Ubuntu vagy Debian gazdagépbe felhasználóként
sudo
jogosultságokkal. -
Szerkessze a
/etc/default/grub
fájlt. Adja hozzá vagy szerkessze aGRUB_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.
-
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