Docker マウント編

Docker

前回、Dockerの基本編でDockerとはなんなのかってところから

自分でDockerイメージを作成してDockerHubにプッシュするところまでやりました

今回は、マウントってやつをやっていきたいと思いマッスル!

・マウントとは。。。

Dockerを使っていくとコンテナ内に作成したhtmlファイルなどは

コンテナが存在している間は、良いのですがコンテナを削除した場合

せっかく作成したファイルは全て消え去ってしまいます。。。

実際にやってみますね!

apache2をubuntuにインストールしてあるイメージからコンテナを作成します。

localhostでアクセスしてみると

無事にapache2のウェルカムページが表示されます。

では、ここにオリジナルのページを作成し、apache2の公開ディレクトリ「/var/www/html」に配置してアクセスしてみます。

localhost/1.htmlへアクセスすると無事に表示されます。

こっからが本番です!

このコンテナを削除して再度イメージからコンテナ起動してみます。

localhost/1.htmlにアクセスすると。。。

オーマイガーですね。。。

ちなみに公開ディレクトリを見てもやはりですね。。。

1.htmlがなくなってしまってます。。。

さて、これをどう防ごうか。。

コンテナの垣根を越えて、どう保存して行こうかってのが今回の記事の内容です!

やり方は2つあります!

・1つ目 マウントバインディング

これは、ローカル環境のあるディレクトリとコンテナ内のディレクトリをマウントバインディングするものです!

具体的にやってみます!

ローカルに「volume」ってディレクトリを作ってそのディレクトリとコンテナ内の「var/www/html」をマウントバインディングさせます。

volumeというディレクトリを作成します。

中身はもちろん空っぽです。

では、コンテナを起動させます。この時のコマンドに注目!

-vオプションです!こいつがvolumeというオプションで、

「ローカルのディレクトリ:コンテナ内のディレクトリ」でマウントバインディングしてくれます!

注意点としては、相対パスで指定できないってところですね。。

ローカルのマウントさせたいディレクトリ内でコマンドを実行しているからって

「.:/var/www/html」ってできないんですよ。。。

pwdが現在のディレクトリのフルパスを返してくれるので

絶対パスで書くのが面倒な人は、pwd使うのおすすめです!

では、コンテナ内に入って「/var/www/html」の中身をみてみましょう!

空っぽですね!「index.html」すらもなくなっています!

じゃあ、ローカルの「volume」ディレクトリ内で「1.html」を作成してみます!

そして、コンテナ内の「var/www/html」を確認すると。。。

なんということでしょう!!

1.htmlが存在しています!!

アクセスすると確かに表示されますね!

はい、じゃあこのコンテナを削除してしまいまーす!

そして、再度イメージからマウントバインディングしてコンテナを起動します!

はい!ちゃんと「1.html」君がいますね!

っという感じで、ローカルに保存されているファイルをいつでもコンテナにマウントさせることができるって訳です!

2つめ ボリュームの作成

2つ目のやり方はローカルのディレクトリではなく、DockerHost上にVolumeというディレクトリを作成してそこでファイルを保持する方法です!

これで、apacheという名のボリュームがDockerHost上に作られました!

では、このボリュームをマウントさせてコンテナを起動します

–mountオプションでマウントしまっせーということをアピールします

そして「source=<マウントするボリュームの名前>,target=<コンテナ内のディレクトリ名>」とします。

これで、apacheというボリュームとコンテナ内の「var/www/html」ディレクトリがバインディングされました!

中身を見てみると

「index.html」が存在します。

では、2.htmlをここに作成してみます!

この状態で、もう一つコンテナをボリュームとバインディングさせて起動してみます

80番ポートは1つ目のコンテナで使っているので7000番にしています。

そして中に入って「/var/www/html」ディレクトリを見てみると。。。

なんということでしょう!「2.html」さんがいらっしゃるではありませんか!

ってな感じで、DockerHost上に作成したボリュームでバインドさせる方法もあります!

はい、以上今回はマウント編でした!

See you!

コメント

タイトルとURLをコピーしました