バージョンなど
$ boot2docker -v Boot2Docker-cli version: v1.3.1 $ docker -v Docker version 1.3.1, build 4e9bbfa
動かなかった時のDockerfileは以下
FROM centos:centos6 MAINTAINER Mapyo # Create vagrant user RUN groupadd vagrant RUN useradd vagrant -g vagrant # Change user USER vagrant WORKDIR /home/vagrant ENV HOME /home/vagrant ADD test.txt ~/test.txt
こんな感じで書いてた。docker buildする時のフォルダには、もちろん、test.txt
は存在している。
buildした時の結果も一見成功しているようにみえた。
Step 7 : ADD test.txt ~/test.txt ---> cda6ac3b2db4 Removing intermediate container 102d36aa40e9 Successfully built cda6ac3b2db4
しかし、実際に作ったイメージの中身を見てみると、存在しない。。。
# build時のコマンド $ docker build -t test . # コンテナを起動 $ docker run -i -t --name hoge test:latest /bin/bash # 確認作業 $ pwd /home/vagrant $ ls -la total 24 drwx------ 2 vagrant vagrant 4096 Nov 24 23:07 . drwxr-xr-x 4 root root 4096 Nov 24 23:07 .. -rw------- 1 vagrant vagrant 20 Nov 24 23:08 .bash_history -rw-r--r-- 1 vagrant vagrant 18 Oct 16 14:56 .bash_logout -rw-r--r-- 1 vagrant vagrant 176 Oct 16 14:56 .bash_profile -rw-r--r-- 1 vagrant vagrant 124 Oct 16 14:56 .bashrc
存在しない。。。。
動くようにする
上記のDockerfileのADDの部分を絶対パスにする。
ADD test.txt /home/vagrant/test.txt
確認作業
$ docker build -t test . $ docker rm hoge $ docker run -i -t --name hoge test:latest /bin/bash # コンテナの中 $ ls -la total 24 drwx------ 2 vagrant vagrant 4096 Nov 24 23:16 . drwxr-xr-x 4 root root 4096 Nov 24 23:16 .. -rw-r--r-- 1 vagrant vagrant 18 Oct 16 14:56 .bash_logout -rw-r--r-- 1 vagrant vagrant 176 Oct 16 14:56 .bash_profile -rw-r--r-- 1 vagrant vagrant 124 Oct 16 14:56 .bashrc -rw-r--r-- 1 root root 11 Nov 24 21:44 test.txt
存在している!
しかし、権限周りがrootになってしまっているので、ちゃんと使うのであれば、 権限の変更が必要。 なので、以下のように変更する
ADD test.txt /home/vagrant/test.txt USER root RUN chown vagrant:vagrant ~/test.txt
確認
$ docker build -t test . $ docker rm hoge $ docker run -i -t --name hoge test:latest /bin/bash # コンテナの中 $ ls -la total 24 drwx------ 2 vagrant vagrant 4096 Nov 24 23:19 . drwxr-xr-x 5 root root 4096 Nov 24 23:19 .. -rw-r--r-- 1 vagrant vagrant 18 Oct 16 14:56 .bash_logout -rw-r--r-- 1 vagrant vagrant 176 Oct 16 14:56 .bash_profile -rw-r--r-- 1 vagrant vagrant 124 Oct 16 14:56 .bashrc -rw-r--r-- 1 vagrant vagrant 11 Nov 24 21:44 test.txt
ちゃんと権限が変わっている事が確認出来た。
ちなみに
今回書いたDockerfileは以下。
FROM centos:centos6 MAINTAINER Mapyo # Create vagrant user RUN groupadd vagrant RUN useradd vagrant -g vagrant # Change user USER vagrant WORKDIR /home/vagrant ENV HOME /home/vagrant ADD test.txt /home/vagrant/test.txt USER root RUN chown vagrant:vagrant ~/test.txt
rootユーザになっても、WORKDIR
とENV HOME
の環境変数は生きているのがちょっと不思議だった。そういうもんかー