LINUX.ORG.RU
решено ФорумAdmin

Сохранить изменения в docker

 


0

0

Запустил docker с образом ubuntu. Обновил, поменял конфиги, вышел, зашел и ничего не сохранилось. Как правильно сохранять изменения в docker? Гугл предлагает сохранение образа, а мне надо сохранять изменения внутри контейнера.

★★★★

монтируй вольюм и пиши в него

leave ★★★★★
()
Ответ на: комментарий от staseg

я хочу обновить ПО, подредачить конфиги и потом запускать с этими изменениями, а не делать всё с нуля

NoobeR ★★★★
() автор топика
Ответ на: комментарий от NoobeR

Тащемта, ты запускаешь контейнер на основе какого-то образа, редактируешь в нём конфиги, коммитишь изменения и получаешь уже новый образ, в котором эти изменения зафиксированы.

theNamelessOne ★★★★★
()
Ответ на: комментарий от NoobeR

Обновлять ПО вручную 99% не надо, просто используй свежий образ. Или создай его сам с помощью docker commit или Dockerfile. Конфиги и персистентные стораджи лучше просовывать с помощью volumes.

staseg ★★★★★
()
Ответ на: комментарий от NoobeR

Образ — это совокупность неизменяемых “слоев” (layers), представляющих различия (differences) в состояниях файловой системы. Контейнер — это рантайм-инстанс образа. Как я уже сказал, образа сами по себе неизменяемы, однако контейнеры содержат вдобавок к неизменяемым слоям образа содержат доступный для записи слой, в котором отражаются его изменения. Когда ты запустил контейнер и внёс изменения в конфиги, эти изменения записались в этот самый слой контейнера. Чтобы зафиксировать эти изменения, есть команда docker commit, которая создаёт из контейнера новый образ, добавляя его доступный для записи слой поверх неизменяемых слоёв базового контейнера. Можно также описывать изменения базового слоя декларативно с помощью Dockerfile.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

Fix

Можно также описывать изменения базового слоя декларативно с помощью Dockerfile.

читай:

Можно также описывать изменения базового образа декларативно с помощью Dockerfile.

———————

Посмотри ещё на volume’ы, вполне возможно, для твоей задачи они будут предпочтительней.

theNamelessOne ★★★★★
()
Ответ на: Fix от theNamelessOne

я и так использую тома, для хранения самих сайтов (~/www). в контейнере ~/www смонтирован в /var/www/srv. если это правильно..

NoobeR ★★★★
() автор топика
Ответ на: комментарий от NoobeR

Насколько я знаю, в таком случае в типовой конфигурации апача ещё требуется симлинк в sites-enabled, так что лучше сразу монтировать туда.

theNamelessOne ★★★★★
()
Ответ на: комментарий от NoobeR

я хочу обновить ПО, подредачить конфиги и потом запускать с этими изменениями, а не делать всё с нуля


Если ты хочешь ручками что-то править в системе и работать с контейнером как с отдельным компьютером, то тебе нужно смотреть не на Docker, а на LXC.

В Docker же твоя задача решается так:

— Делаем Dockerfile для твоих изменений (исходный образ + действия в нём)
— Из Dockerfile делаем image (или это сделает автоматом docker-compose)
— Запускаем docker-образ, монтируя внутрь него индивидуальные для контейнера конфиги, сохраняемые данные и т.п.

Если тебе требуется сохранять сделанные в Docker изменения, то 99% за то, что ты делаешь что-то не так.

KRoN73 ★★★★★
()
Ответ на: комментарий от NoobeR

что-то вроде ~/www/config/:/etc/apache2/sites-available ?

Да.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.