Docker volumeを調べたメモ
Created at: Last updated at:
完全にメモ書きになってるので Evernote にでも書けよって感じ。
Docker はコンテナ型仮想化システムで、必要な時に必要なだけコンテナを作り、終わったら捨てる。いわば使い捨てだ。でも、消えて欲しくないデータを扱う事もあるだろう。そんな話。
自分はインフラエンジニアではないし、Docker でホストの環境弄らずに開発環境作りたかったから始めたっていう理由
Docker コンテナは使い捨てるもの → 残したいファイルはコンテの外に保存しておこうっていう考えらしい。
Docker の volume にも色々ある
- docker run の-v オプション
$ Docker run -v /hoge centos:latest
centos の latest(最新版)を起動するコマンドである。この時-v オプションを使ってコンテナ内に/hoge という名前のシンボリックリングを作成し、フォルダの実体は/var/lib/docker/volumes/{ランダムな英数字}/_data/にある。このフォルダは docker がコンテナと連動させて管理しているため、docker コンテナを消せばこのフォルダも消えます。 ** 説明のため、コマンドは一部省略しています **
この時、内部では 1. ホストに実体のフォルダを作る 2. イメージからコンテナをつくり動かす 3. ホストのフォルダへのリンクをコンテナに作る(上書く)
ってイメージらしい。
- ホストのフォルダとコンテナのフォルダを同期する
このコマンドでホストのフォルダへのシンボリックリンクをコンテナ作成時に貼る。こうすれば、コンテナの設定を変えてリビルドしてもファイルは消えずに残る。 また、ホストにファイルがあるのでホストでエディターを開き、コンテナで開発環境を揃え実行できるので環境のバージョンを変えるのもイメージを差し替えるだけだし、ソースをホスト側で git 管理する事もできる。
$ docker run -v {ホストのフォルダ(実体)}:{コンテナ内のリンク名} centos:latest
後記
dockerfile や docker-compose にも同様の機能があるので、もう少し検証したい