Post-installation steps for Linux
Estimated reading time: 15 minutes
Tämä osio sisältää valinnaiset menettelyt Linux-isäntien konfiguroimiseksi toimimaan paremmin Dockerin kanssa.
- Hallitse Dockeria Ei-root-käyttäjänä
- Määritä Docker käynnistämään käynnistys
- Käytä eri varastomoottoria
- Configure default logging driver
- Määritä, missä Docker-taustaprosessi kuuntelee yhteyksiä
- etäkäytön määrittäminen systemd unit-tiedostolla
- etäkäytön määrittäminen daemonilla.json
- ota IPv6 käyttöön Telakkadeemonissa
- vianmääritys
- ytimen Yhteensopivuus
- ei voi muodostaa yhteyttä Docker-taustaprosessiin
- IP-huolintaongelmat
- DNS-resolveri löytyy resolvista.conf ja containers can ’ t use it
- Määritä DNS-palvelimet Dockerille
- Poista dnsmasq
- Ubuntu
- RHEL, CentOS tai Fedora
- Salli pääsy etäliittymään palomuurin kautta
- kernelisi ei tue cgroup swap limit-ominaisuuksia
Hallitse Dockeria Ei-root-käyttäjänä
Dockerin daemon sitoutuu Unix-liitäntään TCP-portin sijaan. By defaultthat Unix socket is owned by the user root
and other users can only access itusing sudo
. Docker-demoni toimii aina root
käyttäjänä.
Jos et halua esipuhua docker
komentoa sudo
, luo Unix-ryhmä nimeltä docker
ja lisää siihen käyttäjiä. Kun Docker-taustaprosessi käynnistyy, se luo Unix-socketin, johon docker
– ryhmän jäsenet pääsevät käsiksi.
Varoitus
docker
ryhmä myöntää vastaavia oikeuksia kuinroot
käyttäjä. Lisätietoja siitä, miten tämä vaikuttaa järjestelmän tietoturvaan, seeDocker Daemon Attack Surface.
Huom:
Dockerin ajamiseen ilman root-oikeuksia, seeRun the Docker daemon Ei-root-käyttäjänä (juureton tila).
Luo docker
ryhmä ja Lisää käyttäjä:
-
Luo
docker
ryhmä.$ sudo groupadd docker
Lisää käyttäjä docker
ryhmään.
$ sudo usermod -aG docker $USER
Kirjaudu ulos ja kirjaudu takaisin sisään niin, että ryhmäjäsenyytesi arvioidaan uudelleen.
Jos testaus virtuaalikoneella, voi olla tarpeen käynnistää virtuaalikone uudelleen muutosten voimaantuloa varten.
työpöydän Linux-ympäristössä, kuten X Windowsissa, Kirjaudu ulos istunnostasi kokonaan ja kirjaudu sitten takaisin sisään.
Linuxissa voi myös suorittaa seuraavan komennon aktivoidaksesi muutokset ryhmiin:
$ newgrp docker
varmista, että voit suorittaa docker
komentoja ilmansudo
.
$ docker run hello-world
Tämä komento lataa testikuvan ja ajaa sen säiliössä. Kun kone toimii, se tulostaa tiedotteen ja poistuu.
Jos ajoit Docker CLI-komennot aluksi käyttäen sudo
ennen käyttäjän lisäämistä docker
ryhmään, saatat nähdä seuraavan virheen,joka viittaa siihen, että ~/.docker/
Hakemisto luotiin oikeilla oikeuksilla sudo
komennot.
WARNING: Error loading config file: /home/user/.docker/config.json -stat /home/user/.docker/config.json: permission denied
korjataksesi tämän ongelman, joko poista ~/.docker/
Hakemisto (se luodaan uudelleen automaattisesti, mutta kaikki mukautetut asetukset menetetään) tai muuta sen omistusta ja käyttöoikeuksia käyttäen seuraavia komentoja:
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R$ sudo chmod g+rwx "$HOME/.docker" -R
Määritä Docker käynnistämään käynnistys
useimmat nykyiset Linux-jakelut (RHEL, CentOS, Fedora, Debian, Ubuntu 16.04 andhigher) käyttävät systemd
hallinnoimaan mitä palveluita aloita, kun järjestelmä käynnistyy. Debianissa ja Ubuntussa Docker-palvelu on määritetty käynnistymään bootby-oletuksena. Jos haluat käynnistää Dockerin ja Containerin automaattisesti käynnistyksessä otherdistroille, käytä alla olevia komentoja:
$ sudo systemctl enable docker.service$ sudo systemctl enable containerd.service
tämän käytöksen poistamiseksi, käytä disable
sen sijaan.
$ sudo systemctl disable docker.service$ sudo systemctl disable containerd.service
Jos sinun täytyy lisätä HTTP-välityspalvelin, asettaa eri kansio tai osio theDocker runtime-tiedostoille tai tehdä muita mukautuksia, muokkaa järjestelmädocker-palvelintiedostosi asetukset.
Käytä eri varastomoottoria
saadaksesi tietoa eri varastomoottoreista, seeStorage drivereista.Oletustallennusmoottori ja tuettujen tallennusmoottoreiden luettelo riippuvat isäntäsi Linux-jakelusta ja käytettävissä olevista ytimen ajureista.
Configure default logging driver
Docker tarjoaa mahdollisuuden kerätä ja tarkastella lokitietoja kaikista konteista, jotka ovat käynnissä palvelimella, kirjautumisohjaimien sarjan kautta. Oletuslokiajuri, json-file
, kirjoittaa lokitiedot isäntätiedostojärjestelmään JSON-formatoituihin tiedostoihin. Ajan myötä nämä lokitiedostot laajenevat, mikä saattaa johtaa levyn resurssien uupumiseen.
tällaisten ongelmien lievittämiseksi voit joko määrittää json-file
kirjausohjaimen, käyttää analternatiivista kirjausohjainta, kuten ”paikallista” kirjausohjainta, joka suorittaa lokikierron oletusarvoisesti, tai käyttää kirjausohjainta, joka lähettää lokit etähakkuuaggregaattorille.
Määritä, missä Docker-taustaprosessi kuuntelee yhteyksiä
oletusarvoisesti, Docker-taustaprosessi kuuntelee yhteyksiä UNIX-pistorasiaan ja hyväksyy pyynnöt paikallisilta asiakkailta. On mahdollista, että Docker voi hyväksyä pyyntöjä etäpalvelimilta määrittämällä sen kuuntelemaan IP-osoitetta ja porttia sekä UNIX-liitäntää. Lisätietoja tästä asetusvaihtoehdosta on Docker CLI Reference articlen kohdassa ”Bind Docker to another host / port or a unix socket”.
varmista yhteytesi
ennen kuin määrität Dockerin hyväksymään yhteydet etäosastoilta, on ratkaisevan tärkeää, että ymmärrät Dockerin verkkoon avaamisen turvallisuusvaikutukset. Jos toimenpiteitä ei ole toteutettu yhteyden turvaamiseksi, etäkäyttäjien on mahdollista saada pääkäyttäjän käyttöoikeus palvelimeen. Lisätietoja siitä, miten käyttää TLS-varmenteita tämän yhteyden suojaamiseen, on tässä artikkelissa Docker daemon socket-suojauksen ohjeessa.
Dockerin määrittäminen etäyhteyksien hyväksymiseksi voidaan tehdä docker.service
systemd unit file Linux-jakeluille käyttäen systemd: tä, kuten RedHatin, Centosin, Ubuntun ja SLESIN viimeaikaisia versioita, tai daemon.json
file joka issuositellaan Linux-jakeluille, jotka eivät käytä systemd: tä.
systemd vs daemon.json
Dockerin määrittäminen kuuntelemaan yhteyksiä sekä
systemd
unit file ettädaemon.json
file aiheuttavat ristiriidan, joka estää Dockerin käynnistymisen.
etäkäytön määrittäminen systemd unit-tiedostolla
-
käytä komentoa
sudo systemctl edit docker.service
avataksesi ohitustiedostondocker.service
tekstieditorissa. -
Lisää tai muokkaa seuraavia rivejä korvaamalla omat arvosi.
ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
-
Tallenna tiedosto.
-
Reload the
systemctl
configuration.$ sudo systemctl daemon-reload
Restart Docker.
$ sudo systemctl restart docker.service
Tarkista, oliko muutosta kunnioitettu tarkistamalla netstat
vahvistaaksesi dockerd
kuuntelee konfiguroidussa port.
$ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
etäkäytön määrittäminen daemonilla.json
-
Aseta
hosts
array/etc/docker/daemon.json
yhteyden UNIX-pistorasiaan ja IP-osoitteeseen seuraavasti:{ "hosts": }
-
restart docker.
-
Tarkista, kunnioitettiinko muutosta tarkistamalla
netstat
, jotta voidaan vahvistaadockerd
kuuntelee konfiguroidussa portilla.$ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
ota IPv6 käyttöön Telakkadeemonissa
IPv6 käyttöön Telakkadeemonissa, katso IPv6-tuki.
vianmääritys
ytimen Yhteensopivuus
Docker ei voi toimia oikein, jos ytimesi on vanhempi kuin versio 3.10 tai jos siitä puuttuu joitakin moduuleja. Ytimen yhteensopivuuden tarkistamiseksi voit ladata andrunille check-config.sh
script.
$ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh$ bash ./check-config.sh
skripti toimii vain Linuxissa, ei macOS: ssa.
ei voi muodostaa yhteyttä Docker-taustaprosessiin
Jos näet seuraavan kaltaisen virheen, Docker-asiakasohjelmasi voidaan määrittää muodostamaan yhteys eri palvelimessa olevaan Docker-taustaprosessiin, eikä tämä palvelin välttämättä ole tavoitettavissa.
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
nähdäksesi mihin isäntään asiakkaasi on määritetty muodostamaan yhteyden, tarkista DOCKER_HOST
muuttujan arvo ympäristössäsi.
$ env | grep DOCKER_HOST
Jos tämä komento palauttaa arvon, Docker-asiakasohjelman on asetettu muodostamaan yhteys kyseisessä palvelimessa käynnissä olevaan aDocker-palvelimeen. Jos se on katkaistu, Docker-asiakasohjelma on asetettu kytkemään Docker-palvelimeen, joka on käynnissä paikallisessa palvelimessa. Jos se on asetettu väärin,poista se seuraavalla komennolla:
$ unset DOCKER_HOST
saatat joutua muokkaamaan ympäristöäsi tiedostoissa, kuten~/.bashrc
tai~/.profile
estääkseenDOCKER_HOST
muuttuja siitä, että se on setronisesti.
Jos DOCKER_HOST
on asetettu aiotulla tavalla, tarkista, että Docker-taustaprosessi on käynnissä etäpalvelimessa ja että palomuuri tai verkon katkos ei estä sinua muodostamasta yhteyttä.
IP-huolintaongelmat
Jos määrität verkon käsin käyttämällä systemd-network
kanssa systemd
version 219 tai uudempi, Telakkakonttorit eivät välttämättä pääse verkkoosi.Alkava systemd
versio 220, tietyn verkon(net.ipv4.conf.<interface>.forwarding
) Huolinta-asetus on oletusarvoisesti pois päältä. Tämä asetus estää IP: n välityksen. Se on myös ristiriidassa Dockerin käyttäytymisen kanssa, jossa net.ipv4.conf.all.forwarding
asetetaan konteissa.
työstääksesi tätä RHEL -, CentOS-tai Fedora-sivustolla, muokkaa <interface>.network
file in /usr/lib/systemd/network/
Docker-isännälläsi(ex: /usr/lib/systemd/network/80-container-host0.network
) ja lisää seuraava lohko jakso.
...IPForward=kernel# ORIPForward=true
tämä kokoonpano mahdollistaa IP: n huolinnan kontista odotetusti.
DNS-resolveri löytyy resolvista.conf ja containers can ’ t use it
Linux systems which use a GUI use a network manager running, which uses adnsmasq
instance running on a loopback address such as 127.0.0.1
or127.0.1.1
to cache DNS requests, and addes this entry to/etc/resolv.conf
dnsmasq
palvelu nopeuttaa hakuja ja tarjoaa myös DHCP-palveluita. Tämä kokoonpano ei toimi Telakkasäiliössä, jolla on oma verkon nimiavaruus, koska Docker container ratkaisee loopback-osoitteita, kuten 127.0.0.1
itsekseen, ja on hyvin epätodennäköistä, että DNS-palvelinta käytettäisiin omalla loopback-osoitteellaan.
Jos Docker havaitsee, että /etc/resolv.conf
ei ole täysin toimiva DNS-palvelin, seuraa varoitus ja Docker käyttää DNS-resoluutioon Googlen tarjoamia publicDNS-palvelimia osoitteissa 8.8.8.8
ja 8.8.4.4
.
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containerscan't use it. Using default external servers :
Jos näet tämän varoituksen, tarkista ensin, käytätkö dnsmasq
:
$ ps aux |grep dnsmasq
Jos säiliösi tarvitsee poistaa isäntiä, jotka ovat verkkosi, julkiset nimipalvelimet eivät ole riittäviä. Sinulla on kaksi vaihtoehtoa:
- voit määrittää DNS-palvelimen Dockerin käytettäväksi, tai
- voit poistaa
dnsmasq
Networkmanagerissa. Jos teet näin, Networkmanagered your true DNS nameserver to/etc/resolv.conf
, mutta menetät mahdolliset hyödytdnsmasq
.
sinun tarvitsee käyttää vain yhtä näistä menetelmistä.
Määritä DNS-palvelimet Dockerille
asetustiedoston oletuspaikka on /etc/docker/daemon.json
. Voit muuttaa asetustiedoston sijaintia käyttämällä --config-file
daemon-lippua. Alla oleva dokumentaatio olettaa asetustiedoston paikaksi /etc/docker/daemon.json
.
-
luo tai muokkaa Docker-Daemonin asetustiedostoa, joka oletuksena on
/etc/docker/daemon.json
tiedosto, joka ohjaa Docker-daemonkonfiguraatiota.$ sudo nano /etc/docker/daemon.json
-
Käynnistä Docker-taustaprosessi uudelleen.
$ sudo service docker restart
-
tarvittaessa on tarkistettava, että Telakkasäiliöt voivat ratkaista sen sisäisen hostnamebyn.
$ 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
Lisää dns
avain, jonka arvoina on yksi tai useampi IP-osoite. Jos tiedostolla on olemassa oleva sisältö, sinun tarvitsee vain lisätä tai muokata dns
rivi.
{ "dns": }
jos sisäinen DNS-palvelimesi ei pysty ratkaisemaan julkisia IP-osoitteita, sisällytä vähintään yksi DNS-palvelin, joka pystyy, jotta voit muodostaa yhteyden Docker Hubiin ja jotta säiliösi voivat ratkaista Internetin verkkotunnuksia.
Tallenna ja sulje tiedosto.
varmista, että Docker voi ratkaista ulkoisia IP-osoitteita yrittämällä vetää animagea:
$ docker pull hello-world
Poista dnsmasq
Ubuntu
Jos et halua muuttaa Docker-demonin kokoonpanoa käyttääksesi tiettyä sir-osoitetta, poista käytöstä dnsmasq
networkmanagerissa.
-
Edit the
/etc/NetworkManager/NetworkManager.conf
file. -
Käynnistä sekä NetworkManager että Docker uudelleen. Vaihtoehtoisesti voit käynnistää järjestelmäsi uudelleen.
$ sudo restart network-manager$ sudo restart docker
kommentoi dns=dnsmasq
rivi lisäämällä#
merkin rivin alkuun.
# dns=dnsmasq
Tallenna ja sulje tiedosto.
RHEL, CentOS tai Fedora
dnsmasq
on RHEL, CentOS tai Fedora:
dnsmasq
palvelu:
$ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq
Määritä DNS-palvelimet manuaalisesti theRed Hat-dokumentaation avulla.
Salli pääsy etäliittymään palomuurin kautta
Jos suoritat palomuurin samalla palvelimella kuin suoritat Docker-ohjelmaa ja haluat käyttää Docker-ETÄLIITTYMÄÄ toisesta palvelimesta ja etäyhteys on käytössä, sinun täytyy määrittää palomuurisi sallimaan saapuvat yhteydet Docker-porttiin,jonka oletusarvo on 2376
jos TLS-salattu kuljetus on käytössä tai 2375
muuten.
kaksi yleistä palomuurideemonia areUFW (mutkaton palomuuri) (käytetään usein Ubuntu-järjestelmissä) ja firewalld (käytetään usein RPM-pohjaisissa järjestelmissä). Tutustu käyttöjärjestelmän ja palomuurin ohjeisiin, mutta seuraavat tiedot saattavat auttaa sinua pääsemään alkuun. Nämä vaihtoehdot ovat reilunpermissiivisiä ja haluat ehkä käyttää eri asetuksia, jotka lukitsevat järjestelmäsi enemmän.
-
UFW: Set
DEFAULT_FORWARD_POLICY="ACCEPT"
omassa kokoonpanossa. -
firewalld: lisää käytäntöön seuraavat säännöt (yksi Incoming-pyynnöille ja yksi lähteville pyynnöille). Varmista, että käyttöliittymän nimet ja ketjujen nimet ovat oikein.
<direct> </direct>
kernelisi ei tue cgroup swap limit-ominaisuuksia
Ubuntu-tai Debian-isännissä, saatat nähdä samantapaisia viestejä kuvan kanssa työskennellessäsi.
WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
tätä varoitusta ei tapahdu RPM-pohjaisissa järjestelmissä, jotka mahdollistavat nämä todennäköisyydet oletusarvoisesti.
Jos et tarvitse näitä ominaisuuksia, voit jättää varoituksen huomiotta. Voit ottaa nämä ominaisuudet käyttöön Ubuntussa tai Debianissa noudattamalla näitä ohjeita. Memoryand swap accounting incur overhead of about 1% of the total available memoryand a 10% overall performance degradation, even without Docker is not running.
-
Kirjaudu Ubuntu-tai Debian-palvelimeen käyttäjänä
sudo
oikeudet. -
Edit the
/etc/default/grub
file. Lisää tai muokkaaGRUB_CMDLINE_LINUX
lineto lisää seuraavat kaksi avainarvoparia:GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
Tallenna ja sulje tiedosto.
-
Päivitä GRUB.
$ sudo update-grub
Jos GRUB-asetustiedostossa on virheellinen syntaksi, virhe occurs.In tässä tapauksessa toista vaiheet 2 ja 3.
muutokset tulevat voimaan, kun järjestelmä käynnistetään uudelleen.
- Tutustu Get started-koulutusmoduuleihin, joissa opetellaan kuvan rakentamista ja sen ajamista konttisovelluksena.
- käy läpi Develop-sivuston aiheita Dockerin kanssa oppiakseen rakentamaan uusia sovelluksia Dockerin avulla.
Docker, Docker documentation, requirements, apt, installation, ubuntu, install, uninstall, upgrade, update