9
9

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.

DockerfileでADDする時は~が使えない

Posted at

バージョンなど

$ 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ユーザになっても、WORKDIRENV HOMEの環境変数は生きているのがちょっと不思議だった。そういうもんかー

9
9
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
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?