67

次の Dockerfile :

Ubuntuから:12.10
mkdir tmp123 を実行します
実行cd tmp123
実行パスワード

出力があります:

コンテキストのアップロード 10240 バイト
ステップ 1: ubuntu:12.10 から
 ---> b750fe79269d
ステップ 2 : mkdir tmp123 を実行します。
 ---> d2afac8a11b0 で実行中
 ---> 51e2bbbb5513
ステップ 3: cd tmp123 を実行します。
 ---> 4762147b207c で実行中
 ---> 644801121b92
ステップ 4 : RUN pwd
 ---> 3ed1c0f1049d で実行中
/
 ---> eee62a068585

ビルド時 (docker build コマンド)

RUN cd tmp123 は効果がないようです

なぜ ?

4

2 に答える 2

108

実際に期待されています。

dockerfile は、docker run + docker commit のラッパーに他なりません。

FROM ubuntu:12.10
RUN mkdir tmp123
RUN cd tmp123
RUN pwd

することと同じことです:

CID=$(docker run ubuntu:12.10 mkdir tmp123); ID=$(docker commit $CID)
CID=$(docker run $ID cd tmp123); ID=$(docker commit $CID)
CID=$(docker run $ID pwd); ID=$(docker commit $CID)

実行するたびに、新しいコンテナーが生成されるため、pwd は「/」です。

気が向いたら、github でイシューを開いて、Dockerfile に CHDIR 命令を追加することができます。

于 2013-07-26T22:52:07.750 に答える
26

多分あなたはこれを試すことができます; よくわからないし、試すこともできません。うまくいかない場合は、反対票を投じないでください。

ただ:

RUN 'cd tmp123 ; pwd'

それ以外の

RUN cd tmp123
RUN pwd
于 2013-07-26T23:25:39.313 に答える