Пожалуйста, позвольте мне несколько соображений, кроме того, предлагаемое решение, чтобы избежать дальнейших недоразумений.
- Docker позволяет монтировать тома (развернуты из пути каталога вашего хоста в путь докера, то есть
-v $PWD/.ssh:/root/.ssh
= он заменит полную папку .ssh в месте назначения, поэтому не рекомендуется, хотя это возможно ) - Docker позволяет монтировать именованные тома (развернуты из имени именованного тома в путь докера, т. Е.
-v larrycai-vol:/root/.ssh
= он заменит полную папку .ssh в месте назначения, поэтому не рекомендуется, хотя и возможно ) - Docker позволяет монтировать файлы с хоста на докер (пример:
-v $PWD/.ssh/id_rsa:/root/.ssh/id_rsa
= ваш второй пример ) - Docker позволяет монтировать файлы из именованного тома в докер (пример:
-v /var/lib/docker/volumes/YOUR_NAMED_VOLUME_NAME/_data/file:/dest_dir/file
= что вы пытаетесь сделать )
Ваша ошибка в том, что вы указываете docker монтировать id_rsa из вашего каталога larrycai-vol, а не из тома с докером по имени.Другими словами, три следующие команды эквивалентны :
docker run -it -v ./larrycai-vol/id_rsa:/root/.ssh/id_rsa own_ubuntu
docker run -it -v $PWD/larrycai-vol/id_rsa:/root/.ssh/id_rsa own_ubuntu
docker run -it -v larrycai-vol/id_rsa:/root/.ssh/id_rsa own_ubuntu
Таким образом, если каталог larrycai-vol (не именованный том, но каталог на вашем хосте) не существует, команда нене работает так, как вы хотите.
Определенно, чтобы сделать то, что вы пытаетесь, вам нужно создать bind volume
для каталога, в котором хранятся данные тома с именем тома.
docker run -it -v
/var/lib/docker/volumes/larrycai-vol/_data/id_rsa:/root/.ssh/id_rsa
own_ubuntu