dockerのデフォルトのWORKDIRは何ですか?


回答:



32

デフォルトは確かに/他の場所で述べられている通りです。ただし、空の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明示的に設定することをお勧めします。


13

コンテナ内でバイナリを実行するためのデフォルトの作業ディレクトリはルートディレクトリ(/)ですが、開発者はDockerfileWORKDIRコマンドを使用して別のディレクトリを設定できます。オペレーターはこれを次のようにオーバーライドできます。

-w="": Working directory inside the container

ここ:https//docs.docker.com/engine/reference/run/#workdir


6

ユーザーがいないので、厳密に言えば、生まれたばかりのDockerまたはコンテナのルートです。したがって、この男が言ったように、すべての変更に対して、そのコンテナのコミットがあります。したがって、そのpwdまたはあなたがWORKDIRに尋ねたように/ 、デフォルトでrootであり、実行するたびに次の/bin/bashようになります。

$docker exec -i -t 53f784fwer54 /bin/bash

実行中のコンテナでは/、ここでルートディレクトリに配置されます。


あなたの答えは話題から外れているだけでなく、まったく間違っています。まず、質問は次のとおりです。Dockerfileで明示的に設定されていない場合、IMAGEのデフォルトのWORKDIRは何ですか。新しいCONTAINERのデフォルトのworkdir/が正しくなく、無関係であるというあなたの答え。新しいコンテナのデフォルトのworkdirは、イメージのデフォルトのworkdirと同じです。たとえばdocker exec -ti <my_app> /bin/bash;、新しいbashプロセスで実行したpwdところ、作業ディレクトリがであることがわかりました/app
lmat -復活モニカ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.