今度は客先でコンテナ勉強会
今日すること
こんにちはふるてつです。
ただいま客先の勉強会にてDockerを勉強中で、まずは入門としてこちらのサイト「入門Docker」を勉強しております。
https://y-ohgi.com/introduction-docker/
今回は少なめですが、「コンポーネント」 メニューの中から「volume」ページをもくもくとしました。
またいつものように勉強した内容を書きます。
ボリュームはデータを永続化するための機能になります。
1. Volume
Volumeには2つの種類が存在するそうです。
1-1. Data Volume
Volume は Docker Container のライフサイクルの外で管理されるファイル/ディレクトリとのことです。
ではまず Volume の方を試してみます、下記のコマンドでボリュームをマウントしてみます。
docker run -v /tmp/text ubuntu touch /tmp/text/hogefugapiyo
ところがこちらを流しても、なにもおこりません🤢
"hogefugapiyo"というファイルができてエクスプローラーで見えるはずですが、どこにもファイルができません。
わたしの場合ホストOSがWindowsなので、どうやら基本的にC:ドライブを含んだ書き方にしないとならない模様です。
というわけでやむなく下記のように-v <ホストOSのディレクトリ>:<コンテナのディレクトリ>
と書き替えました。
こちらはファイルができました。
docker run -v /c/tmp:/tmp ubuntu touch /tmp/text/hogefugapiyo
下図のようにエクスプローラーでファイルが見えました、よしよし ✨
その昔、VirtualBoxでも同じようなことができてましたねぇ、少し思い出しました。
あとはvolume が作成されたか確認のために、docker volume ls
を実行します。
うーむ、しかし volume は1件も表示されません。
volumeのところはなんだか難しいですね、Windows版のDocker
だと表示されないのかも🤔
ここは気を取り直して次にいきます。
1-2. Data Volume Container
次は、Data Volume Container。
他のDocker Container で指定されているVolumeを参照するための機能とのことです。
1-1 の Data Volume は他のコンテナからは見えないんですね多分。
コンテナ同士で値を引き渡すときなどに使うのでしょう。
では下のコマンドを試します。
docker run --name volume-test -v /tmp/test ubuntu touch /tmp/test/{hoge,fuga,piyo}
今度はエラーになりました。
Docker
のubuntu
だからか、複数ファイルのtouch
コマンドを受け付けていないようです。
docker run --name volume-test -v /tmp/test ubuntu touch /tmp/test/{hoge,fuga,piyo}
発生場所 行:1 文字:72
+ ... --name volume-test -v /tmp/test ubuntu touch /tmp/test/{hoge,fuga,piy ...
+ ~
パラメーター一覧に引数が存在しません。
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingArgument
仕方がないので、こちらも1ファイルだけに書き直します。
C:ドライブのところも同じく書き直します。
docker run --name volume-test -v /c/tmp:/tmp ubuntu touch /tmp/tesst/piyo
今度はエラーになりません。
では、別のコンテナを新しく起動して、さきほど作成した volume-test コンテナのファイルへアクセスできるか確認してみます。
docker run ubuntu ls -l /tmp/test
なるほど確かにファイルを認識できていません。
docker run ubuntu ls -l /tmp/test
ls: cannot access '/tmp/test': No such file or directory
次はData Volume Container
の方のコマンドを実行します。
docker run --volumes-from volume-test ubuntu ls -l /tmp/test
docker run --volumes-from volume-test ubuntu ls -l /tmp/test
total 0
-rwxr-xr-x 1 root root 0 Oct 2 11:29 piyo
こちらではファイルを認識しました。
volume には自コンテナ内のみと他コンテナから見れるものと2種類あるんですね。
今日の感想
今回もまた「入門Docker」の内容をそのまま、まとめた内容になりました。
volumeのところは少し難しく途中で詰まることがあり、その分内容も少し短くなりました。
あっさりした内容で申し訳ありませんが、次は頑張ります✨
それではまた