ホストで行われた更新が Docker コンテナに反映されるように、ホスト ディレクトリを Docker コンテナにマウントしようとしています。
どこが間違っているのでしょうか。私がやったことは次のとおりです:
kishore$ cat Dockerfile
FROM ubuntu:trusty
RUN apt-get update
RUN apt-get -y install git curl vim
CMD ["/bin/bash"]
WORKDIR /test_container
VOLUME ["/test_container"]
kishore$ tree . ├── Dockerfile └── main_folder ├── tfile1.txt ├── tfile2.txt ├── tfile3.txt └── tfile4.txt
1 directory, 5 files kishore$ pwd /Users/kishore/tdock
kishore$ docker build --tag=k3_s3:latest .
Uploading context 7.168 kB Uploading context Step 0 : FROM ubuntu:trusty ---> 99ec81b80c55 Step 1 : RUN apt-get update ---> Using cache ---> 1c7282005040 Step 2 : RUN apt-get -y install git curl vim ---> Using cache ---> aed48634e300 Step 3 : CMD ["/bin/bash"] ---> Running in d081b576878d ---> 65db8df48595 Step 4 : WORKDIR /test_container ---> Running in 5b8d2ccd719d ---> 250369b30e1f Step 5 : VOLUME ["/test_container"] ---> Running in 72ca332d9809 ---> 163deb2b1bc5 Successfully built 163deb2b1bc5 Removing intermediate container b8bfcb071441 Removing intermediate container d081b576878d Removing intermediate container 5b8d2ccd719d Removing intermediate container 72ca332d9809
kishore$ docker run -d -v /Users/kishore/main_folder:/test_container k3_s3:latest
c9f9a7e09c54ee1c2cc966f15c963b4af320b5203b8c46689033c1ab8872a0ea
kishore$ docker run -i -t k3_s3:latest /bin/bash
root@0f17e2313a46:/test_container# ls -al total 8 drwx------ 2 root root 4096 Apr 29 05:15 . drwxr-xr-x 66 root root 4096 Apr 29 05:15 ..
root@0f17e2313a46:/test_container# exit exit
kishore$ docker -v
Docker version 0.9.1, build 867b2a9
- boot2dockerのバージョンを確認する方法がわかりません
直面している質問、問題:
- main_folder を Docker コンテナ内にある test_container フォルダにリンクするにはどうすればよいですか?
- これを自動的に行う必要があります。
run -d -v
コマンドを実際に使用せずにこれを行うにはどうすればよいですか? - boot2docker がクラッシュするとどうなりますか? Docker ファイルはどこに保存されますか (Dockerfile 以外)?
ベストアンサー1
これを行うにはいくつかの方法があります。最も簡単な方法は、ADD
次のように dockerfile コマンドを使用することです。
ADD . /path/inside/docker/container
ただし、dockerfile をビルドした後にホスト上のこのディレクトリに加えられた変更は、コンテナには表示されません。これは、コンテナをビルドするときに、docker がディレクトリを に圧縮し、そのコンテキストをコンテナに永続的に.tar
アップロードするためです。
これを行う 2 番目の方法は、ボリュームをマウントするという、あなたが試みた方法です。可能な限り移植性を高めようとするため、ホスト ディレクトリは実行しているマシンに応じて変わる可能性があるため、dockerfile 内でホスト ディレクトリを docker コンテナ ディレクトリにマップすることはできません。ホスト ディレクトリを docker コンテナ ディレクトリにマップするには、 を-v
使用するときにフラグを使用する必要がありますdocker run
。例:
# Run a container using the `alpine` image, mount the `/tmp`
# directory from your host into the `/container/directory`
# directory in your container, and run the `ls` command to
# show the contents of that directory.
docker run \
-v /tmp:/container/directory \
alpine \
ls /container/directory