2014-10-07 3 views
4

Как найти разницу между двумя работающими контейнерами с помощью Docker-клиента? У меня есть изображение, работающее как несколько экземпляров, а позже я изменил/установил новые пакеты в экземплярах и потерял трек. Есть ли способ найти различия между этими запущенными контейнерами?Разделение докеров между двумя контейнерами

+0

Как насчет: экспортировать оба контейнера, развернуть их и запустить diff, это поможет? Если это не то, что вам нужно, предоставьте дополнительную информацию. – Behe

+0

Конечно, это было бы в одну сторону. Но есть ли лучший способ или какой-то автоматизированный способ как команда или инструмент? – user88975

+0

Нет проблем. Я нашел инструмент, но, похоже, коммерческий. Угадайте, есть и бесплатная версия. Не уверен, что я могу назвать инструмент здесь. Но есть инструменты. – user88975

ответ

0

Вы ищете команду docker diff, в которой будут перечислены изменения, сделанные на контейнере с момента его создания.

Возьмите этот пример, в котором новый контейнер с именем так 26230214 создан и в котором файл /tmp/foo.txt добавляется и /etc/default/ntpdate удалены:

$ docker run -it --name so-26230214 base bash -il 
[email protected]:/# echo "foo" > /tmp/foo.txt 
[email protected]:/# rm /etc/default/ntpdate 
[email protected]:/# logout 

Команда docker diff напечатает:

$ docker diff so-26230214 
C /etc 
C /etc/default 
D /etc/default/ntpdate 
C /root 
A /root/.bash_history 
C /tmp 
A /tmp/foo.txt 

Это позволит вам узнать, какие файлы были изменены.

Если вам нужна информация о том, что изменилось в этих файлах, у вас нет другого выбора, кроме экспорта файловой системы контейнера с docker export или отдельных файлов с помощью docker cp и проверки их.

Обратите внимание, что docker export10 и docker cp будут отображаться только файлы, которые являются частью файловой системы контейнера, а это означает, что эти команды не предоставят вам доступ к файлам в volumes.

+1

Томас. Исправьте меня, если я ошибаюсь. Могу ли я использовать docker diff для создания diff на двух разных контейнерах? Мой вопрос заключается в различии между контейнерами, а не внутри контейнером. Будет ли Docker diff работать на межконтейнерах? – user88975

+0

Нет, это не будет, 'docker diff 'показывает изменения в файловой системе контейнера. Хотя это не покажет вам различия между двумя контейнерами, это может помочь определить, в каком контейнере есть изменения, которые вы ищете. Чтобы сравнить два контейнера, используйте 'docker export > my_container.tar' для создания tar-архива для обоих контейнеров, а затем сравните файлы tar – Thomasleveil

3

вы должны осмотреть контейнер

docker inspect CONTAINER_1 
docker inspect CONTAINER_2 

найти фрагмент для каждого один

"Id": "cc502eeb69968c9b80c029f8124333d725ee124db4357de69786bc9bdf3a8088",

затем с датчиком ID вы можете сравнить папки

/var/lib/docker/aufs/mnt/CONTAINER_1 vs/var/lib/docker/aufs/mnt/CONTAINER_2