49
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker 17.09 からADD/COPY --chownでファイルのオーナーを変更できるようになった

Posted at

はじめに

Docker 17.09から ADD/COPY --chownでファイルのオーナーを変更できるようになったようです。
root以外でコンテナを動かしたりするときに地味にうれしい機能。

まぁなくても追加でRUN chownすればいいだけで困りはしないが、あるとDockerイメージのレイヤが1枚減るので地味にうれしい。

moby/moby: Add --chown flag to ADD/COPY commands

というわけで、さっそく試してみた。

稼働確認

稼働確認したバージョンは以下のとおり。

$ docker version
Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.9
 Git commit:   afdb6d4
 Built:        unknown-buildtime
 OS/Arch:      darwin/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: false

サンプルで適当なDockerfileを準備する。

FROM alpine

RUN addgroup -S app && adduser -S -g app app
COPY --chown=app:app test.txt /tmp/test.txt

ここでは、alpineベースでappというグループとユーザを追加し、test.txt をCOPYしている。
COPY --chown=app:app でオーナーのユーザとグループを指定するのがポイント。

稼働確認のためコピーしている text.txt を適当にローカルに作る。

$ echo "chown test" > test.txt

ビルドしてみる。

$ docker build -t chown-test ./
Sending build context to Docker daemon  3.072kB
Step 1/3 : FROM alpine
 ---> 4a415e366388
Step 2/3 : RUN addgroup -S app && adduser -S -g app app
 ---> Running in 81e187e57527
 ---> 8db2e92a0c06
Removing intermediate container 81e187e57527
Step 3/3 : COPY --chown=app:app test.txt /tmp/test.txt
 ---> d5e26892a07e
Successfully built d5e26892a07e
Successfully tagged chown-test:latest

コンテナを実行してオーナーを確認してみる。

$ docker run -it chown-test ls -la /tmp
total 12
drwxrwxrwt    2 root     root          4096 Oct 15 06:34 .
drwxr-xr-x   27 root     root          4096 Oct 15 06:35 ..
-rw-r--r--    1 app      app             11 Oct 15 06:34 test.txt

ちゃんとオーナー設定されてる。よさげ。
上の例は COPY だけど試してみたところ ADD でも動いた。
あと試してみたところディレクトリがある場合も、 chown -R 相当で再帰的にサブディレクトリのファイルのオーナーも変わってたので、大量のファイルをまとめてCOPYする場合でも大丈夫。

おわりに

COPYと同時にchownできるとイメージのレイヤが1枚減って地味にうれしい。

ちなみにchmodもないの?って思って調べたらIssueは立ってて、

moby/moby: Proposal: Add --chmod flag to ADD/COPY commands (analogous to --chown)

これを書いてる現在(2017/10/15)は検討中のようです。chmodもそのうち追加されるかもしれないですね。

49
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
49
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?