Sajarah masalah migrasi gudang docker (akar docker)

Teu langkung ti sababaraha dinten kapengker, diputuskeun salah sahiji server pikeun mindahkeun gudang docker (diréktori tempat docker nyimpen sadaya wadah sareng file gambar) ka bagian anu misah, anu
miboga kapasitas leuwih gede. Tugasna sigana sepele sareng henteu ngaramalkeun masalah ...

Hayu urang ngamimitian:

1. Eureun sareng maéhan sadaya wadah aplikasi kami:

docker-compose down

Upami aya seueur wadah sareng aranjeunna dina komposisi anu béda, anjeun tiasa ngalakukeun ieu:

docker rm -f $(docker ps -q)

2. Ngeureunkeun daemon docker:

systemctl stop docker

3. Pindahkeun diréktori ka lokasi nu dipikahoyong:

cp -r /var/lib/docker /docker/data/storage

4. Urang ngabejaan daemon docker katingal dina diréktori anyar. Aya sababaraha pilihan: boh nganggo -g bandéra pikeun nunjuk daemon ka jalur anyar, atawa systemd configs, nu kami dipaké. Atawa symlink a. Kuring moal balik kana teuing jéntré ngeunaan ieu, éta dina Internét. pinuh manual dina mindahkeun docker root ka lokasi anyar.

5. Mimitian daemon docker tur pastikeun kasampak di tempat katuhu:

systemctl status docker

Dina salah sahiji garis kaluaran urang kedah tingali:

├─19493 /usr/bin/dockerd --data-root=/docker/data/storage

Kami mastikeun yén pilihan éta disalurkeun ka daemon, ayeuna hayu urang pariksa naha éta nerapkeun éta (hatur nuhun inkvizitor68sl)!

docker info | awk '/Root Dir/ {print $NF}' 

6. Hayu urang ngamimitian aplikasi urang:

docker-compose up -d

7. Cék

Sarta di dieu fun dimimitian, DBMS, MQ, sagalana geus rupa! pangkalan data gembleng, sagalana jalan ... iwal nginx. Urang gaduh nginx urang sorangan ngawangun kalawan Kerberos na courtesans. Sareng ningali log wadahna nunjukkeun yén éta henteu tiasa nyerat kana /var/tmp - Idin ditolak. Kuring knead candi kuring jeung ramo kuring jeung nyoba nganalisis kaayaan ... Kumaha ieu mungkin? Gambar Docker henteu robih. Urang ngan dipindahkeun diréktori. Éta salawasna digawé, sarta di dieu éta pikeun anjeun ... Demi percobaan, kuring lebet kana wadahna jeung leungeun kuring jeung ngarobah hak kana diréktori ieu, aya akar, akar 755, masihan akar, akar 777. Jeung sagalana dimimitian ... Hiji pikiran mimiti disada dina sirah kuring - sababaraha jenis omong kosong ... Teu sangka, ogé, meureun kuring teu nyandak hiji hal kana rekening ...

Kuring mutuskeun yén urang murag asih jeung hak aksés ka file salila mindahkeun. Kami ngeureunkeun aplikasi, daemon docker, ngahapus diréktori énggal sareng nyalin diréktori /var/lib/docker nganggo rsync -a.

Jigana sadayana henteu kunanaon ayeuna, hayu urang angkat aplikasi Docker.

Aaand... masalahna tetep... Panon kuring kedutan. Kuring bergegas kana konsol mesin virtual kuring, dimana kuring ngajalankeun rupa-rupa tés, kuring ngagaduhan gambar nginx ieu, sareng kuring naek ka jero wadahna, sareng di dieu hak kana diréktori / var / tmp nyaéta akar, akar 777. sami sareng kuring kedah nyetél sacara manual. Tapi gambarna idéntik!

Sistem file xfs dianggo dimana-mana.

Kuring dibandingkeun ngagunakeun paréntah

docker inspect my-nginx:12345

Sadaya hashes idéntik, sadayana hiji-hiji. Duanana dina server sareng dina mesin virtual kuring. Kuring ngahapus gambar nginx lokal sareng ditarik deui tina pendaptaran, anu ku sababaraha alesan aya dina mesin anu sami. Sareng masalahna sami ... Ayeuna panon kadua kuring kedutan.

Abdi henteu émut deui naon anu aya dina sirah kuring, sagigireun ngagorowok "AAAAAAAAA" sareng anu sanésna. Tabuh 4 isuk-isuk, sareng kode sumber Docker dianggo pikeun ngartos prinsip hashing lapisan gambar. Dibuka kaléng katilu inuman énergi. Sarta dina tungtungna eta dawned on kuring nu hashing ukur nyokot kana akun file, eusina, tapi NOT AKSES HAK! Nyaéta, ku sababaraha cara anu misterius hak urang leungit, selinux ditumpurkeun, acl henteu dianggo, sareng henteu aya anu caket.

Kuring ngahapus gambar lokal, ogé ngahapus gambar tina pendaptaran docker sareng ngadorong deui. Jeung sagalana digawé. Tétéla yén nalika mindahkeun hakna leungit, boh di jero gambar lokal sareng di jero gambar anu aya dina pendaptaran. Sakumaha anu kuring parantos nyarios, kusabab sababaraha alesan tempatna dina mobil anu sami. Jeung salaku hasilna, dina hiji diréktori /var/lib/docker.

Sareng antisipasi patarosan naha aranjeunna nyobian ngabalikeun pandangan docker kana diréktori anu lami - henteu, aranjeunna henteu nyobian, sayangna, kaayaan henteu ngijinkeun éta. Leres, sareng kuring leres-leres hoyong terang.

Saatos nyerat tulisan ieu, solusi pikeun masalah sigana écés pikeun kuring, tapi dina waktos analisa sigana henteu. Jujur, kuring Googled sareng henteu mendakan kaayaan anu sami.

Hasilna: Kuring ngumbar masalah, kuring masih teu ngartos alesan =(

Upami aya anu terang, nebak, gaduh visi ngeunaan kamungkinan panyabab masalah ieu, kuring bakal bungah pisan ngadangu ti anjeun dina koméntar!

sumber: www.habr.com

Tambahkeun komentar