かべぎわブログ

技術的なことについてかけたらいいな…

DockerfileのADDでローカルのtarアーカイブをコンテナ内に展開する

概要

DockerfileでつかえるADD命令をつかってローカルにあるtarファイルをコンテナ内に展開してみたいと思います。

事前準備

こんなかんじのDockerfileを用意する。

FROM centos
ADD test_archive.tar /root/

用意したアーカイブはこんなかんじ。
ADDで指定するアーカイブはDockerfileとおなじディレクトリに格納しておきます。

$ tar tvf test_archive.tar 
-rw-rw-r-- ec2-user/ec2-user 7 2018-08-01 13:56 wawawa.txt
-rw-rw-r-- ec2-user/ec2-user 7 2018-08-01 14:21 sasasa.txt

やってみる

事前準備でつくったDockerfileをもとにビルドします。

$ sudo docker build -t add_test ./docker_file_dir/

Sending build context to Docker daemon   12.8kB
Step 1/2 : FROM centos
 ---> 49f7960eb7e4
Step 2/2 : ADD test_archive.tar /root/
 ---> eb909b976b8f
Successfully built eb909b976b8f
Successfully tagged add_test:latest

つくったコンテナの中身を確認してみると以下のようにアーカイブが展開されて中身がコンテナに格納されていることがわかります。

$ sudo docker run eb909b976b8f ls -l /root/
total 12
-rw-rw-r-- 1 1000 1000    7 Aug  1 14:21 sasasa.txt
-rw-rw-r-- 1 1000 1000    7 Aug  1 13:56 wawawa.txt

おわりに

にたような機能を持つ命令としてCOPYがあります。
そっちではアーカイブの展開はできません。

tarを展開する必要があればADD
それ以外はCOPYをつかうのがベストプラクティスっぽいです。

Docker

Docker