Kuhu on Dockeri pildid salvestatud? Dockeri konteineriteed on lahti seletatud

Docker on laialdaselt omaks võetud ja seda kasutatakse tootmises olevate rakenduste käitamiseks ja laiendamiseks. Lisaks saab seda kasutada rakenduste kiireks käivitamiseks, käivitades ühe Dockeri käsu.

Ettevõtted investeerivad ka üha rohkem jõupingutusi kohalike ja kaugete Dockeri konteinerite arendamise parandamiseks, millel on ka palju eeliseid.

Dockeri konfiguratsiooni põhiteabe saate järgmiselt:

$ docker info ... Storage Driver: overlay2 Docker Root Dir: /var/lib/docker ... 

Väljund sisaldab teavet teie salvestusdraiveri ja dokeri juurkataloogi kohta.

Dockeri piltide ja konteinerite salvestuskoht

Dockeri konteiner koosneb võrgusätetest, mahtudest ja piltidest. Dockeri failide asukoht sõltub teie operatsioonisüsteemist. Siin on ülevaade kõige sagedamini kasutatavatest operatsioonisüsteemidest:

  • Ubuntu: /var/lib/docker/
  • Fedora: /var/lib/docker/
  • Debian: /var/lib/docker/
  • Windows: C:\ProgramData\DockerDesktop
  • MacOS: ~/Library/Containers/com.docker.docker/Data/vms/0/

MacOS-is ja Windowsis käitab Docker Linuxi konteinereid virtuaalses keskkonnas. Seetõttu on vaja teada veel mõningaid asju.

Docker Macile

Docker ei ühildu algselt macOS-iga, seega kasutatakse Hyperkit virtuaalse pildi käitamiseks. Selle virtuaalsed pildiandmed asuvad:  

~/Library/Containers/com.docker.docker/Data/vms/0

Virtuaalse pildi sees on tee vaikimisi Dockeri tee /var/lib/docker.

Dockeri juurkataloogi saate uurida, luues virtuaalsesse keskkonda kest:

$ screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty 

Selle seansi saate tappa, vajutades Ctrl + a , millele järgneb k ja y .

Docker Windowsi jaoks

Windowsis on Docker natuke murtud. On olemas Windowsi natiivmahutid, mis töötavad sarnaselt Linuxi konteineritega. Linuxi konteinereid käitatakse minimaalses Hyper-V-põhises virtuaalses keskkonnas.

Linuxi piltide käivitamise konfiguratsioon ja virtuaalne pilt salvestatakse vaikimisi Dockeri juurkausta.

C:\ProgramData\DockerDesktop

Kui kontrollite tavalisi pilte, saate Linuxi teed nagu:

$ docker inspect nginx ... "UpperDir": "/var/lib/docker/overlay2/585...9eb/diff" ... 

Virtuaalse pildiga saate ühenduse luua järgmiselt:

docker run -it --privileged --pid=host debian nsenter -t 1 -m -u -i sh

Seal saate minna viidatud asukohta:

$ cd /var/lib/docker/overlay2/585...9eb/ $ ls -lah drwx------ 4 root root 4.0K Feb 6 06:56 . drwx------ 13 root root 4.0K Feb 6 09:17 .. drwxr-xr-x 3 root root 4.0K Feb 6 06:56 diff -rw-r--r-- 1 root root 26 Feb 6 06:56 link -rw-r--r-- 1 root root 57 Feb 6 06:56 lower drwx------ 2 root root 4.0K Feb 6 06:56 work

Dockeri juurkausta sisemine struktuur

Toas /var/lib/dockersalvestatakse erinevat teavet. Näiteks konteinerite, mahtude, järkude, võrkude ja klastrite andmed.

$ ls -la /var/lib/docker total 152 drwx--x--x 15 root root 4096 Feb 1 13:09 . drwxr-xr-x 13 root root 4096 Aug 1 2019 .. drwx------ 2 root root 4096 May 20 2019 builder drwx------ 4 root root 4096 May 20 2019 buildkit drwx------ 3 root root 4096 May 20 2019 containerd drwx------ 2 root root 12288 Feb 3 19:35 containers drwx------ 3 root root 4096 May 20 2019 image drwxr-x--- 3 root root 4096 May 20 2019 network drwx------ 6 root root 77824 Feb 3 19:37 overlay2 drwx------ 4 root root 4096 May 20 2019 plugins drwx------ 2 root root 4096 Feb 1 13:09 runtimes drwx------ 2 root root 4096 May 20 2019 swarm drwx------ 2 root root 4096 Feb 3 19:37 tmp drwx------ 2 root root 4096 May 20 2019 trust drwx------ 15 root root 12288 Feb 3 19:35 volumes 

Dockeri pildid

Raskeim sisu on tavaliselt pildid. Kui kasutate vaikimisi salvestatud draiveri ülekatet2, salvestatakse teie Dockeri pildid kausta /var/lib/docker/overlay2. Sealt leiate erinevaid faile, mis tähistavad Dockeri pildi kirjutuskaitstud kihte ja selle peal olevat kihti, mis sisaldab teie muudatusi.

Uurime sisu, kasutades näiteid:

$ docker image pull nginx $ docker image inspect nginx [ { "Id": "sha256:207...6e1", "RepoTags": [ "nginx:latest" ], "RepoDigests": [ "[email protected]:ad5...c6f" ], "Parent": "", ... "Architecture": "amd64", "Os": "linux", "Size": 126698063, "VirtualSize": 126698063, "GraphDriver": { "Data": { "LowerDir": "/var/lib/docker/overlay2/585...9eb/diff: /var/lib/docker/overlay2/585...9eb/diff", "MergedDir": "/var/lib/docker/overlay2/585...9eb/merged", "UpperDir": "/var/lib/docker/overlay2/585...9eb/diff", "WorkDir": "/var/lib/docker/overlay2/585...9eb/work" }, ... 

LowerDir sisaldab read-only kihtide pilt. Muutusi tähistav kirjutamise-kirjutamise kiht on osa UpperDirist . Minu puhul sisaldab kaust NGINX UpperDir logifaile:

$ ls -la /var/lib/docker/overlay2/585...9eb/diff total 8 drwxr-xr-x 2 root root 4096 Feb 2 08:06 . drwxr-xr-x 3 root root 4096 Feb 2 08:06 .. lrwxrwxrwx 1 root root 11 Feb 2 08:06 access.log -> /dev/stdout lrwxrwxrwx 1 root root 11 Feb 2 08:06 error.log -> /dev/stderr

MergedDir esindab tulemusena UpperDir ja LowerDir , mida kasutavad sadamatööline joosta mahuti. WorkDir on sisemine kataloog overlay2 ja peaks olema tühi.

Dockeri köited

Konteineritesse on võimalik lisada püsiv pood, et hoida andmeid kauem kui konteiner eksisteerib, või jagada mahtu hostiga või teiste mahutitega. Mahuti saab käivitada helitugevusega, kasutades valikut -v :

$ docker run --name nginx_container -v /var/log nginx

Teavet ühendatud helitugevuse asukoha kohta saame:

$ docker inspect nginx_container ... "Mounts": [ { "Type": "volume", "Name": "1e4...d9c", "Source": "/var/lib/docker/volumes/1e4...d9c/_data", "Destination": "/var/log", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], ... 

Viidatud kataloog sisaldab faile /var/logNGINX-i konteineri asukohast .

$ ls -lah /var/lib/docker/volumes/1e4...d9c/_data total 88 drwxr-xr-x 4 root root 4.0K Feb 3 21:02 . drwxr-xr-x 3 root root 4.0K Feb 3 21:02 .. drwxr-xr-x 2 root root 4.0K Feb 3 21:02 apt -rw-rw---- 1 root 43 0 Jan 30 00:00 btmp -rw-r--r-- 1 root root 34.7K Feb 2 08:06 dpkg.log -rw-r--r-- 1 root root 3.2K Feb 2 08:06 faillog -rw-rw-r-- 1 root 43 29.1K Feb 2 08:06 lastlog drwxr-xr-x 2 root root 4.0K Feb 3 21:02 nginx -rw-rw-r-- 1 root 43 0 Jan 30 00:00 w 

Koristage Dockeri kasutatud ruum

Kasutamata konteinerite puhastamiseks on soovitatav kasutada käsku Docker. Konteinerit, võrke, pilte ja järgu vahemälu saab puhastada, käivitades:

$ docker system prune -a

Lisaks saate ka kasutamata köited eemaldada, käivitades:

$ docker volumes prune

Kokkuvõte

Docker on oluline osa paljude inimeste keskkonnast ja tööriistadest. Mõnikord tunneb Docker natuke maagiat, lahendades küsimusi väga arukalt, rääkimata kasutajale, kuidas kulisside taga asju aetakse. Sellegipoolest on Docker tavaline tööriist, mis hoiab oma raskeid osi avatavates ja muudetavates kohtades.

Mõnikord võib ladustamine kiiresti täita. Seetõttu on kasulik kontrollida selle juurkausta, kuid ühtegi faili pole soovitatav käsitsi kustutada ega muuta. Selle asemel saab kärpimiskäske kasutada kettaruumi vabastamiseks.

Loodan, et teile meeldis artikkel. Kui teile meeldib ja tunnete vajadust aplauside järele, järgige mind Twitteris.

Olen meie revolutsioonilise teekonnaplatvormi Explore The World kaasasutaja. Oleme noor idufirma, mis asub Saksamaal Dresdenis ja on suunatud kõigepealt Saksamaa turule. Pöörduge minu poole, kui teil on mõne teema kohta tagasisidet ja küsimusi.

Head Dockeri uudistamist :)

Viited

  • Dokkeri ladustaja dokumentatsioon

    //docs.docker.com/storage/storagedriver/

  • Dokumentatsiooni ülekate failisüsteem

    //www.kernel.org/doc/Documentation/filesystems/overlayfs.txt