Dockerコンテナにホストディレクトリをマウントする方法 質問する

Dockerコンテナにホストディレクトリをマウントする方法 質問する

ホストで行われた更新が 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のバージョンを確認する方法がわかりません

直面している質問、問題:

  1. main_folder を Docker コンテナ内にある test_container フォルダにリンクするにはどうすればよいですか?
  2. これを自動的に行う必要があります。run -d -vコマンドを実際に使用せずにこれを行うにはどうすればよいですか?
  3. 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

おすすめ記事