Docker: скопировать файл из контейнера на хост-машину и обратно

Автор: | 12/10/2015

docker_lxcИмеется запущенный контейнер:

# docker ps | grep httpd
4f20e373e04b        httpd               "/bin/bash"         5 minutes ago       Up 5 minutes        80/tcp                        determined_mccarthy

Внутри которого есть файл, который необходимо скопировать на хост-машину, что бы вносить изменения в настройки Apache HTTP в нём:

root@4f20e373e04b:/usr/local/apache2# file /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf: ASCII text

Для копирования файла – используется cp:

Usage: docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|-
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH

Копируем файл:

# docker cp 4f20e373e04b:/usr/local/apache2/conf/httpd.conf /home/ubuntu/dockers/httpd/

Проверяем:

# ls -l /home/ubuntu/dockers/httpd/
total 20
-rw-r--r-- 1 root root 18321 Sep  9 21:46 httpd.conf

То же можно сделать и наоборот – скопировать локальный файл с хоста – в контейнер:

# touch file.txt
# docker cp file.txt 4f20e373e04b:/root

Проверяем:

root@4f20e373e04b:/usr/local/apache2# ls -l /root/
total 0
-rw-r--r-- 1 root root 0 Oct 12 10:36 file.txt

Готово.