[Docker] Как отредактировать файл после того, как я перейду в контейнер докеров?



Answers

Если вы не хотите добавлять редактор, чтобы внести небольшие изменения (например, изменить конфигурацию tomcat), вы можете просто

docker cp <container>:/path/to/file.ext .

который копирует его на ваш локальный компьютер (в ваш текущий каталог). Затем отредактируйте файл локально, используя ваш любимый редактор, а затем выполните

docker cp file.ext <container>:/path/to/file.ext

для замены старого файла.

Question

Я успешно обстрелял контейнер докера, используя

docker exec -i -t 69f1711a205e bash

Теперь мне нужно отредактировать файл, и у меня нет редакторов внутри

root@69f1711a205e:/# nano
bash: nano: command not found
root@69f1711a205e:/# pico
bash: pico: command not found
root@69f1711a205e:/# vi
bash: vi: command not found
root@69f1711a205e:/# vim
bash: vim: command not found
root@69f1711a205e:/# emacs
bash: emacs: command not found
root@69f1711a205e:/#

Как редактировать файлы?




Вид отвратительный, но в крайнем случае вы можете использовать sed или awk чтобы делать небольшие изменения или удалять текст. Разумеется, будьте осторожны с вашими регулярными целями, и имейте в виду, что вы, вероятно, root на своем контейнере и, возможно, придется перенастраивать разрешения.

например. удаление полной строки, содержащей текст, соответствующий регулярному выражению

awk '!/targetText/' file.txt > temp && mv temp file.txt

(more)




Я использую «docker run» (не «docker exec»), и я нахожусь в ограниченной зоне, где мы не можем установить редактор. Но у меня есть редактор на докер-хосте. Мое обходное решение: Свяжите монтировку тома с хостом докера в контейнер ( https://docs.docker.com/engine/reference/run/#/volume-shared-filesystems ) и отредактируйте файл за пределами контейнера. Это выглядит так:

docker run -v /outside/dir:/container/dir

Это в основном для экспериментов, позже я бы изменил файл при создании изображения.




Чтобы ваши изображения докеров были небольшими, не устанавливайте ненужные редакторы. Вы можете редактировать файлы через ssh с хоста докера в контейнер:

vim scp://remoteuser@containerip//path/to/document



Links