Docker совет №1: Вывод содержимого файла из контейнера
Sep 14, 2017 14:53 · 201 words · 1 minute read
Время от времени появляется необходимость сбрасывать файл из docker-контейнера на хост-систему. Вот один из способов сделать это — давайте разберемся!
Такая необходимость возникает прежде всего при отладке, например, когда нужно скопировать содержимое файла конфигурации из контейнера, чтобы открыть его в своем любимом редакторе, или когда требуется отправить кому-то дамп конфигурационного файла. Конечно, можно сразу запускать docker-контейнеры с монтированием томов (volumes
) из хост-системы в контейнер, но вы ведь не знаете, какой конфиг вам может потребоваться?
В первом случае, когда у вас уже запущен docker-контейнер, и вы не желаете перезапускать его с монтированием тома, получить содержимое конфигурационного файла можно так:
docker exec nginx cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.20.0.3 d09203ce7f6e
Во втором случае, когда контейнер еще не запущен, получить конфиг можно так:
docker run --rm alpine cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 67451966e901
Но это только половина дела — не забудьте перенаправить этот вывод в новый файл на хост-системе, вот так:
docker run --rm alpine cat /etc/hosts > ~/temp.txt
Теперь проверим содержимое файла:
cat ~/temp.txt
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 22c44d8dc95c