$ (pwd) на томе docker-in-docker монтирует неожиданный каталог - PullRequest
0 голосов
/ 24 октября 2019

Пример:

pavel@Z546:~/test/dind-volumes$ ls
test.txt
pavel@Z546:~/test/dind-volumes$ docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(pwd):/app -w /app -it docker sh
/app # ls
test.txt
/app # pwd
/app
/app # docker run -v $(pwd):/app2 -w /app2 -it alpine sh
/app2 # ls
share       tomita-cfg
/app2 # pwd
/app2

В каком месте -v $(pwd):/app2 монтируется? Это не ~/test/dind-volumes на хост-ОС. share и tomita-cfg - папки из хост-ОС, но путь совершенно другой, даже не запускается с ~

1 Ответ

1 голос
/ 24 октября 2019

Каталог, который монтируется в новый контейнер, находится в каталоге /app на хосте.

Это , а не Docker в Docker asЯ понимаю, что термин означает: вы не запускаете вторую копию Docker внутри контейнера Docker, вы просто делаете доступ к сокету Docker хоста доступным внутри контейнера.

В сценарии, который вы показываете, когда вынаходятся внутри контейнера с установленным сокетом Docker хоста и запускают docker run -v $(pwd):/app2 ..., сначала оболочка внутри контейнера расширяется $(pwd) до /app, а затем отправляет запрос демону Docker для запуска контейнера с /app bind-монтировано к /app2. С точки зрения демона Docken, это неотличимо от запуска одной и той же команды непосредственно на хосте.

...