Docker挫折したマンを助けたい(実践編)

kujira_zasyou

どうも、エンジニアのミヤマです。
前回は、Dockerとはどんなものか、をざっくり紹介しました。

Docker挫折したマンを助けたい
どうも、エンジニアのミヤマです。 最近、コンテナやDockerといったワードをよく聞くようになってきました。 しかし一方で、さわってみて挫...

今回は、実際に手を動かしてDockerをなんとなくでも理解してもらえると。。。
というわけで、やっていきます。

準備するもの(前提)

Dockerを準備しておいてください。

それぞれ確認として、バージョンを確認したり、コンテナを確認したりしておきます。

今回、ぼくの環境(OS)はmacです。
macであれば、docker for macというのがあるので、簡単にインストールすることができますよ。

さっそく、コンテナを実行してみる

では、さっそくコンテナを実行してみようと思います。

前回のブログで説明したように、Dokcerはイメージをコンテナで実行します。

なのでまずは、ubuntuのイメージをとりあえずもってきます(プルしてきます)。
このイメージは、docker hubというところからもってきますが、コマンドがよしなにやってくれます。

次にプルしてきたイメージをコンテナで実行します。

そうするとubuntuのイメージが実行されているコンテナの中に入ることができます。
コンテナの中でubuntuが実行されていることを確認するために、以下のようなコマンドを打ってみてもいいかもしれません。

コンテナからは、control+P,Qで抜けることができます。

コンテナが実行されているか、確認する

そして、コンテナがされているのは、このコマンドで確認できます。

コンテナに名前をつけて、実行する

docker ps すると、コンテナの名前がテキトーにつけられているのがわかります。
これを自分でつけることもできます。まー、したいひとはどうぞ、って感じです。

次のコマンドで、コンテナに名前をつけて実行できます。

コンテナの中の変更は、削除されてしまう

コンテナは一度削除されると、そのコンテナの中の変更も削除されます。
それを見るために、ちょっとここで実験です。

コンテナの中で適当なファイルを作って、コンテナを削除してみます。

そして、コンテナを削除します。

ここから、またコンテナを作成すると、コンテナの中にはさっきの変更は保存されていないことがわかります。

でも、開発においてこれって困りますよね。
それをどう解決するかを次に紹介します。

コンテナにフォルダをマウントする

コンテナの中の変更は、コンテナの削除のタイミングで削除されてしまいます。
コンテナを使った開発においては、変更されるフォルダは別でコンテナの起動とは別にマウントする、という方法をとります。
こうやって、コンテナの外からマウントします。

コンテナには、ディレクトリを好きなところにマウントすることができます。(ボリュームマウントといいます。)

-vオプションをつけるとマウントすることができます。
このコマンドは、ローカルのフォルダをコンテナの中のディレクトリにマウントするというものです。

では、やってみます。

これで確かに、フォルダがコンテナにマウントできることを確認できました。

ついでに、マウントしたフォルダの中の適当なファイルを編集してみます。
そうすると、コンテナの中のフォルダとマウントしたフォルダはも同期されているはずです。

Dockerfileを作る

「ぼくは、私はubuntuの中でphpを動かしたい」っていう人、コンテナの中でこれをしたい、っていうのがあると思います。
でも、そういうイメージがdocker hubにない、ってことがあると思います。

そういうときは、Dockerfileを使います。

Dockerfileを使うことで、オリジナルのDockerのイメージを作ることができます。

まずは、Dockerfileを作る

ではでは、さっそくDockerfileを作ってみます。
まずは、適当にディレクトリを作って、その中にDockerfileという名前のファイルをつくります。
んで、今回はテキトーにphpでも入れてみます。

そして、そのDockerfileの内容はこのようにしておきます。

これの内容としては、ubuntu:18:04のイメージをインストールして、その中にphpをインストールしています。

では、このDockerfileをもとにオリジナルのイメージを作ります。
(今回はおまけで、そのできるイメージに名前をつけておきます。)

コマンドはこんな感じです。

イメージができたことを確認

以下のコマンドで、イメージができたことを確認します。

これでできてますね。では、このイメージをつかってコンテナを実行してみます。

まとめ

今回でなんとなくdockerがどんなもので、どうやって使えるのかイメージできたんじゃないでしょうか?
次回は、もうちょっとdockerを簡単にしてくれるツール、docker-composeを説明してみようとおもいます。
ではでは、今回はこのへんで。

新アプリ事前登録受付中!!

今月のオススメアプリ♪

stache