[解決済み] Dockerfileでchownが効かないのはなぜですか?
2023-01-13 11:58:08
質問
私のDockerfileは、ディレクトリを作成し、それをchownし、その後ディレクトリをリストアップします。 そのディレクトリはまだrootによって所有されています。 これはなぜですか?
以下がそのDockerfileです。
FROM ubuntu:precise
RUN useradd -d /home/testuser -m -s /bin/bash testuser
RUN mkdir -p /var/local/testrunner/logs
VOLUME ["/var/local/testrunner/logs"]
RUN grep testuser /etc/passwd
RUN grep root /etc/passwd
RUN chown -R testuser:testuser /var/local/testrunner/logs
RUN ls -ld /var/local/testrunner/logs
以下は、"docker build"の出力です。
Sending build context to Docker daemon 10.24 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:precise
---> ab8e2728644c
Step 1 : RUN useradd -d /home/testuser -m -s /bin/bash testuser
---> Using cache
---> 640f12671c86
Step 2 : RUN mkdir -p /var/local/testrunner/logs
---> Using cache
---> bf7756fd5b1f
Step 3 : VOLUME ["/var/local/testrunner/logs"]
---> Using cache
---> 65c73ee76c20
Step 4 : RUN grep testuser /etc/passwd
---> Using cache
---> db72fff0b965
Step 5 : RUN grep root /etc/passwd
---> Running in ebff78df7a9a
root:x:0:0:root:/root:/bin/bash
---> ead0ff704a59
Removing intermediate container ebff78df7a9a
Step 6 : RUN chown -R testuser:testuser /var/local/testrunner/logs
---> Running in c925f67b2ab4
---> 253132be935e
Removing intermediate container c925f67b2ab4
Step 7 : RUN ls -ld /var/local/testrunner/logs
---> Running in 978bc66aa47e
drwxr-xr-x 2 root staff 4096 Oct 1 15:15 /var/local/testrunner/logs
Dockerバージョン1.2.0、ビルドfa7b24f
ホストは Ubuntu 12.04 を実行していますが、3.13.0-36-generic カーネルを使用しています。
どのように解決するのですか?
自分の質問の答え:ボリュームと宣言されている。 VOLUME 命令を取り出せば、chown が有効になります。
さらに言えば、ボリュームを宣言すれば の後に を実行した後でも、chown の設定は有効なままです。
関連
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] Dockerfileに複数行のコマンドを改行を維持したまま記述する方法とは?
-
[解決済み] すべてのdockerボリュームを削除するには?
-
[解決済み] dockerコンテナを停止または再起動できない
-
[解決済み] Docker-Composeで1つのコンテナに対するロギングを無効にする
-
[解決済み] 実行中のすべてのdockerコンテナを再起動するためのコマンド?
-
[解決済み] docker-compose.ymlで環境変数を再利用する
-
[解決済み] dockerで複数のターミナルを開くには?
-
[解決済み] Dockerfileの条件付きENV
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】非 root で Docker COPY するには?
-
[解決済み] Docker Compose: そのようなイメージはありません
-
[解決済み] docker unauthorized: 認証が必要 - ログインに成功するとプッシュされる
-
[解決済み] Dockerのデタッチドモード
-
[解決済み] Docker-compose マウントされたボリュームにユーザーとグループを設定する
-
[解決済み] Docker build 「archive.ubuntu.comを解決できませんでした」 apt-get fails to install anything
-
[解決済み] Docker-Composeで1つのコンテナに対するロギングを無効にする
-
[解決済み] docker-composeで起動した実行中のコンテナにリンクできない
-
[解決済み] DockerにSSH接続する方法は?
-
[解決済み] Kubernetesの秘密を解き明かす