Articles

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ä

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 kuin rootkä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ä:

  1. Luo docker ryhmä.

    $ sudo groupadd docker
  2. Lisää käyttäjä dockerryhmää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 dockerkomentoja 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.servicesystemd 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

  1. käytä komentoa sudo systemctl edit docker.service avataksesi ohitustiedoston docker.service tekstieditorissa.

  2. Lisää tai muokkaa seuraavia rivejä korvaamalla omat arvosi.

    ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
  3. Tallenna tiedosto.

  4. Reload the systemctl configuration.

     $ sudo systemctl daemon-reload
  5. 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

  1. Aseta hosts array /etc/docker/daemon.json yhteyden UNIX-pistorasiaan ja IP-osoitteeseen seuraavasti:

    { "hosts": }
  2. restart docker.

  3. Tarkista, kunnioitettiinko muutosta tarkistamalla netstat, jotta voidaan vahvistaa dockerd 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.shscript.

$ 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~/.bashrctai~/.profileestää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 systemdversion 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>.networkfile 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.confdnsmasq 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ödyt dnsmasq.

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-filedaemon-lippua. Alla oleva dokumentaatio olettaa asetustiedoston paikaksi /etc/docker/daemon.json.

  1. luo tai muokkaa Docker-Daemonin asetustiedostoa, joka oletuksena on/etc/docker/daemon.json tiedosto, joka ohjaa Docker-daemonkonfiguraatiota.

    $ sudo nano /etc/docker/daemon.json
  2. Lisää dnsavain, 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.

  3. Käynnistä Docker-taustaprosessi uudelleen.

    $ sudo service docker restart
  4. varmista, että Docker voi ratkaista ulkoisia IP-osoitteita yrittämällä vetää animagea:

    $ docker pull hello-world
  5. 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

Poista dnsmasq

Ubuntu

Jos et halua muuttaa Docker-demonin kokoonpanoa käyttääksesi tiettyä sir-osoitetta, poista käytöstä dnsmasq networkmanagerissa.

  1. Edit the /etc/NetworkManager/NetworkManager.conf file.

  2. kommentoi dns=dnsmasqrivi lisäämällä#merkin rivin alkuun.

    # dns=dnsmasq

    Tallenna ja sulje tiedosto.

  3. Käynnistä sekä NetworkManager että Docker uudelleen. Vaihtoehtoisesti voit käynnistää järjestelmäsi uudelleen.

    $ sudo restart network-manager$ sudo restart docker
RHEL, CentOS tai Fedora

dnsmasq on RHEL, CentOS tai Fedora:

    dnsmasqpalvelu:

    $ 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 2375muuten.

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.

  1. Kirjaudu Ubuntu-tai Debian-palvelimeen käyttäjänä sudo oikeudet.

  2. Edit the /etc/default/grub file. Lisää tai muokkaa GRUB_CMDLINE_LINUX lineto lisää seuraavat kaksi avainarvoparia:

    GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

    Tallenna ja sulje tiedosto.

  3. 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