でWORKDIR
ディレクトリを作業ディレクトリとして設定するために使用できますが、設定Dockerfile
しない場合のデフォルト値は何ですか?
回答:
と言う/
ので、ルートディレクトリ
デフォルトは確かに/
他の場所で述べられている通りです。ただし、空のDockerイメージ(FROM scratch
)から実行されることはほとんどないため、WORKDIR
使用しているベースイメージによって設定される可能性があります。
例えば、https://github.com/docker-library/tomcat/blob/master/Dockerfile-alpine.templateがありWORKDIR $CATALINA_HOME
、かつhttps://github.com/dockerfile/ubuntu/blob/master/DockerfileがありWORKDIR /root
。(ただし、https://hub.docker.com/r/base/archlinux/~/dockerfile/は使用しませんWORKDIR
。)
したがって、独自にWORKDIR
明示的に設定することをお勧めします。
コンテナ内でバイナリを実行するためのデフォルトの作業ディレクトリはルートディレクトリ(/
)ですが、開発者はDockerfileWORKDIRコマンドを使用して別のディレクトリを設定できます。オペレーターはこれを次のようにオーバーライドできます。
-w="": Working directory inside the container
ユーザーがいないので、厳密に言えば、生まれたばかりのDockerまたはコンテナのルートです。したがって、この男が言ったように、すべての変更に対して、そのコンテナのコミットがあります。したがって、そのpwdまたはあなたがWORKDIRに尋ねたように/
、デフォルトでrootであり、実行するたびに次の/bin/bash
ようになります。
$docker exec -i -t 53f784fwer54 /bin/bash
実行中のコンテナでは/
、ここでルートディレクトリに配置されます。
/
が正しくなく、無関係であるというあなたの答え。新しいコンテナのデフォルトのworkdirは、イメージのデフォルトのworkdirと同じです。たとえばdocker exec -ti <my_app> /bin/bash;
、新しいbashプロセスで実行したpwd
ところ、作業ディレクトリがであることがわかりました/app
。
RUN pwd