Как найти разницу между двумя работающими контейнерами с помощью Docker-клиента? У меня есть изображение, работающее как несколько экземпляров, а позже я изменил/установил новые пакеты в экземплярах и потерял трек. Есть ли способ найти различия между этими запущенными контейнерами?Разделение докеров между двумя контейнерами
ответ
Вы ищете команду 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 export
10 и docker cp
будут отображаться только файлы, которые являются частью файловой системы контейнера, а это означает, что эти команды не предоставят вам доступ к файлам в volumes.
Томас. Исправьте меня, если я ошибаюсь. Могу ли я использовать docker diff для создания diff на двух разных контейнерах? Мой вопрос заключается в различии между контейнерами, а не внутри контейнером. Будет ли Docker diff работать на межконтейнерах? – user88975
Нет, это не будет, 'docker diff 'показывает изменения в файловой системе контейнера. Хотя это не покажет вам различия между двумя контейнерами, это может помочь определить, в каком контейнере есть изменения, которые вы ищете. Чтобы сравнить два контейнера, используйте 'docker export
вы должны осмотреть контейнер
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
Как насчет: экспортировать оба контейнера, развернуть их и запустить diff, это поможет? Если это не то, что вам нужно, предоставьте дополнительную информацию. – Behe
Конечно, это было бы в одну сторону. Но есть ли лучший способ или какой-то автоматизированный способ как команда или инструмент? – user88975
Нет проблем. Я нашел инструмент, но, похоже, коммерческий. Угадайте, есть и бесплатная версия. Не уверен, что я могу назвать инструмент здесь. Но есть инструменты. – user88975