バージョンなど
$ 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
の環境変数は生きているのがちょっと不思議だった。そういうもんかー