Beyond The Limit

はじまりは2001年

Dockerメモ4

ホストOSからコンテナへディレクトリを共有する

  • DockerはホストOSのディレクトリをコンテナ側へ見せることが可能になっている
  • -vオプションを利用して-v <ホスト側ディレクトリ>:<コンテナ側ディレクトリ>とする
  • docker run -v /root/docker-testdir:/root/docdoc -it --name test0x1 centos:centos6.6 /bin/bashこんな感じ、ホスト側の/root/docker-testdirをコンテナ側の/root/docdocディレクトリに割り当てる
  • コンテナ側で/root/docdocの中にファイルを作成すると、ホスト側では/root/docker-testdirの中にコンテナ側で作成したファイルが存在する
  • つまりホスト/コンテナ側から読み書きできる状態になっている

書き込み不可でコンテナへディレクトリを共有する

  • -v <ホスト側ディレクトリ>:<コンテナ側ディレクトリ>:roとする

共有可能なディレクトリの確認

  • docker inspect <container id> | <container image>で表示される
  • こんな感じで出てくる、docker inspectコマンドで色々と情報が取れる
    "Mounts": [
      {
        "Source": "/root/docker-testdir",   #コンテナ側ディレクトリ
        "Destination": "/root/docdoc",      #ホスト側ディレクトリ
        "Mode": "",                         #読み込み専用ならroと表示
        "RW": true,                         #読み書き出来るのでtrueになっている
        "Propagation": "rprivate"
      }

コンテナ間でのディレクトリの共有

  • docker run -v /root/dockertest -itd --name test0x4 centos:centos6.6 /bin/bashこれでコンテナtest0x4の/root/dockertestディレクトリができる
  • docker run --volumes-from test0x4 -it --name test0x5 centos:centos6.6 /bin/bashこれでコンテナtest0x5のroot/dockertestはtest0x4のディレクトリと共有されている -- --volumes-from <container id>オプションが必要 -- --volumes-from:ro <container id>にすると書き込み不可で共有されるが、提供側のコンテナでは読み書きが出来る