Dockerでshell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directoryとエラーが出たときの対処法

Dec. 17, 2019, 1:32 a.m. edited Dec. 21, 2019, 4:34 a.m.

#Docker 

症状

Dockerコンテナ(名前をhogeとする)でマウントしていたディレクトリ(-v `pwd`:/appとしていたとする)をホスト側で削除してしまい、一応作り直したものの、docker exec -it hoge bashで入ったときに

$ docker exec -it hoge bash
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
root@2fe6c3a26c99:.#

となってしまった。

(エラーの内容としては、そんなディレクトリなんて存在しないよ的なこと)

解決方法

https://stackoverflow.com/a/33956387 にあるようにhogeコンテナをベースとして新しくnew_hoge_imageイメージを作り、そこからdocker runをすればよい。つまり、

$ docker commit hoge new_hoge_image
$ docker run -it -d --name new_hoge -v `pwd`:/app new_hoge_image:latest
$ docker exec -it new_hoge bash
root@839665a8c347:/app#

ということである。

回答のコメントにあるように、作り直した新しいコンテナ名等を変えたいときはdocker renameとかが使えそう。