Π˜ΡΡ‚ΠΎΡ€ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ пСрСноса docker storage (docker root)

НС Π΄Π°Π»Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΠ°Ρ€Ρƒ Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄ Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· сСрвСров вынСсти docker storage (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π³Π΄Π΅ Π΄ΠΎΠΊΠ΅Ρ€ Ρ…Ρ€Π°Π½ΠΈΡ‚ всС Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², ΠΎΠ±Ρ€Π°Π·ΠΎΠ²) Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
ΠΎΠ±Π»Π°Π΄Π°Π» большСй Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ. Π—Π°Π΄Π°Ρ‡Π°, казалось Π±Ρ‹, Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄Π²Π΅Ρ‰Π°Π»Π° бСды…

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Π΅ΠΌ:

1. ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΈ ΡƒΠ±ΠΈΠ²Π°Π΅ΠΌ всС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ нашСго прилоТСния:

docker-compose down

Ссли ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ ΠΎΠ½ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… compose, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

docker rm -f $(docker ps -q)

2. ΠžΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½:

systemctl stop docker

3. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ мСсто:

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

4. Π‘ΠΎΠΎΠ±Ρ‰Π°Π΅ΠΌ Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ смотрСл Π² Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. Π’ΡƒΡ‚ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²: Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· Ρ„Π»Π°Π³ -g ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½Ρƒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ systemd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈ использовали. Ну ΠΈΠ»ΠΈ симлинк. Бильно Ρ€Π°ΡΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ это Π½Π΅ стану, Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎ ΠΌΠ°Π½ΡƒΠ°Π»ΠΎΠ² ΠΎ пСрСносС docker root Π² Π½ΠΎΠ²ΠΎΠ΅ мСсто.

5. Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ΅ΠΌ Π΄Π΅ΠΌΠΎΠ½ Π΄ΠΎΠΊΠ΅Ρ€Π°, ΠΈ наблюдаСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ смотрСл ΠΊΡƒΠ΄Π° Π½Π°Π΄ΠΎ:

systemctl status docker

Π’ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· строк Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ:

β”œβ”€19493 /usr/bin/dockerd --data-root=/docker/data/storage

УбСдились, Ρ‡Ρ‚ΠΎ Π΄Π΅ΠΌΠΎΠ½Ρƒ ΠΎΠΏΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠ» Π»ΠΈ ΠΎΠ½ Π΅Π΅ (спасибо inkvizitor68sl)!

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

6. Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ΅ΠΌ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

docker-compose up -d

7. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅ΠΌ

И Π²ΠΎΡ‚ Ρ‚ΡƒΡ‚ начинаСтся самоС интСрСсноС, Π‘Π£Π‘Π”, MQ, всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ! Π‘Π°Π·Π° Ρ†Π΅Π»Π°, всС работаСт… ΠΊΡ€ΠΎΠΌΠ΅ nginx. Π£ нас своя сборка nginx с кСрбСрос ΠΈ ΠΊΡƒΡ€Ρ‚ΠΈΠ·Π°Π½ΠΊΠ°ΠΌΠΈ. И просмотр Π»ΠΎΠ³ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΡƒΠΊΠ°Π·Π°Π» Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² /var/tmp β€” Permission denied. Разминаю ΠΏΠ°Π»ΡŒΡ†Π°ΠΌΠΈ виски ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽβ€¦ Как Ρ‚Π°ΠΊ-Ρ‚ΠΎ? Π”ΠΎΠΊΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π· ΠΆΠ΅ Π½Π΅ мСнялся. ΠœΡ‹ ΠΆΠ΅ просто пСрСнСсли Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ. ВсСгда Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, ΠΈ Ρ‚ΡƒΡ‚ Π½Π° тСбС… Π Π°Π΄ΠΈ экспСримСнта зашСл Ρ€ΡƒΡ‡ΠΊΠ°ΠΌΠΈ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΏΡ€Π°Π²Π° Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π±Ρ‹Π»ΠΈ root, root 755, Π΄Π°Π» root, root 777. И всС Π·Π°Π²Π΅Π»ΠΎΡΡŒβ€¦ Π’ Π³ΠΎΠ»ΠΎΠ²Π΅ Π·Π°Π·Π²ΡƒΡ‡Π°Π»Π° ΠΌΡ‹ΡΠ»ΡŒ β€” Π±Ρ€Π΅Π΄ ΠΊΠ°ΠΊΠΎΠΉ-то… Π”ΡƒΠΌΠ°Π», Π½Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ я Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ Π½Π΅ учСл…

РСшил, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΎΠ»ΡŽΠ±ΠΈΠ»ΠΈ ΠΏΡ€Π°Π²Π° доступа Π½Π° Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΈ пСрСносС. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½, ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /var/lib/docker ΡƒΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ rsync -a.

Π”ΡƒΠΌΠ°ΡŽ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ, ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΠΌ Π΄ΠΎΠΊΠ΅Ρ€, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π˜ΠΈΠΈβ€¦ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΡΡ‚Π°Π»Π°ΡΡŒβ€¦ Π£ мСня задСргался Π³Π»Π°Π·. Π― мСтнулся ΠΊ консоли своСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ, Π³Π΄Π΅ гоняю Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ тСсты, Ρƒ мСня Π±Ρ‹Π» этот ΠΎΠ±Ρ€Π°Π· nginx, ΠΈ я Π·Π°Π»Π΅Π· Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΈ Ρ‚ΡƒΡ‚ Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ /var/tmp ΠΏΡ€Π°Π²Π° стоят root, root 777. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€ΡƒΠΊΠ°ΠΌΠΈ. Но вСдь ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹!

Π’Π΅Π·Π΄Π΅ использовалась Π€Π‘ xfs.

Π― сравнил Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

docker inspect my-nginx:12345

ВсС Ρ…Π΅ΡˆΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹, всС ΠΎΠ΄ΠΈΠ½ Π² ΠΎΠ΄ΠΈΠ½. Как Π½Π° сСрвСрС, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΠΌΠΎΠ΅ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠ΅. Π― ΡƒΠ΄Π°Π»ΠΈΠ» Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· nginx ΠΈ спуллил Π·Π°Π½ΠΎΠ²ΠΎ с registry, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½ стоит Π½Π° этой ΠΆΠ΅ машинС. И ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Π° ТС… Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ мСня задСргался Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Π»Π°Π·.

Π― ΡƒΠΆΠ΅ Π½Π΅ помню, ΠΊΠ°ΠΊΠΈΠ΅ мысли Π±Ρ‹Π»ΠΈ Π² ΠΌΠΎΠ΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΊΡ€ΠΈΠΊΠΎΠ² «ААААААА» ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ. На ΡƒΠ»ΠΈΡ†Π΅ 4-Ρ‹ΠΉ час Π½ΠΎΡ‡ΠΈ, Π² Ρ…ΠΎΠ΄ пошли исходники Π΄ΠΎΠΊΠ΅Ρ€Π° с Ρ†Π΅Π»ΡŒΡŽ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ слоСв ΠΎΠ±Ρ€Π°Π·Π°. ΠžΡ‚ΠΊΡ€Ρ‹Π» Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Π±Π°Π½ΠΊΡƒ энСргСтика. И Π² ΠΈΡ‚ΠΎΠ³Π΅ Π΄ΠΎ мСня дошло, Ρ‡Ρ‚ΠΎ Ρ…Π΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°ΠΉΠ», Π΅Π³ΠΎ содСрТимоС, Π½ΠΎ НЕ ΠŸΠ ΠΠ’Π Π”ΠžΠ‘Π’Π£ΠŸΠ! Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρƒ нас побились ΠΏΡ€Π°Π²Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ selinux ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½, acl Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, sticky bit Π½Π΅Ρ‚Ρƒ.

Π― ΡƒΠ΄Π°Π»ΠΈΠ» Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, Ρ‚Π°ΠΊ-ΠΆΠ΅ ΡƒΠ΄Π°Π»ΠΈΠ» ΠΎΠ±Ρ€Π°Π· ΠΈΠ· docker registry ΠΈ Π·Π°ΠΏΡƒΡˆΠΈΠ» Π·Π°Π½ΠΎΠ²ΠΎ. И всС Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ пСрСносС ΠΏΡ€Π°Π²Π° побились, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ локального ΠΎΠ±Ρ€Π°Π·Π°, Ρ‚Π°ΠΊ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π·Π° Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² registry. Как я ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», ΠΏΠΎ ряду ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΎΠ½ располагался Π½Π° этой ΠΆΠ΅ Ρ‚Π°Ρ‡ΠΊΠ΅. И ΠΊΠ°ΠΊ слСдствиС Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /var/lib/docker.

И ΠΏΡ€Π΅Π΄Π²ΠΊΡƒΡˆΠ°Ρ вопрос, Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π»ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Π·ΠΎΡ€ Π΄ΠΎΠΊΠ΅Ρ€Π° Π½Π° старый ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ β€” Π½Π΅Ρ‚, Π½Π΅ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π»ΠΈ, ΡƒΠ²Ρ‹, ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π½Π΅ позволяли. Π”Π° ΠΈ сильно Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ.

ПослС написания Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ, ΠΌΠ½Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ каТСтся ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Π½ΠΎ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π΅ казалось. ЧСстно Π³ΡƒΠ³Π»ΠΈΠ», ΠΈ Π½Π΅ нашСл схоТих ситуаций.

Π˜Ρ‚ΠΎΠ³: ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΠ», ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ понял =(

Если ΠΊΡ‚ΠΎ-Ρ‚ΠΎ знаСтдогадываСтсябыло Π²ΠΈΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ β€” Π±ΡƒΠ΄Ρƒ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π°Π΄ Π²Π°ΠΌ Π² коммСнтариях!

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ