環境:Windows
ネットの情報でDockerfileを使い、コンテナ作ったりdocker-composeを使い、環境構築してみたりしていたが、理解が追いつかずこのままでは身につかないと判断し、本を購入。
VMwareでLinux環境?をつくり、その中にUbuntuサーバをインストールしてリモート開発をしようとしてみたりもした。
購入した本
仕組みと使い方がわかるDocker&Kubernetesのきほんのきほん
小笠原 種高 著
感想
Dockerを知る前にLinuxとはどんなものなのかとサーバーの知識がある程度頭に入っていないとそもそも理解が出来ないことが分かった。
本書はDockerdesktopをWindowsにインストールしコンテナなり、イメージなりを作っていく内容となっている。
サーバー、アプリ、データベースそれぞれのコンテナ設定方法や応用方法が載っています。
本を読む前の俺はDockerfileとdocker-composeの違いや用途が全く理解できていなかった。
恥ずかしながらDocker-imageは自分でつくるものと勘違いをしていてDocker hubの公式imageって必ず使わないといけないものなのかな?とか考えていた。
さて、本題に入るが、ホストOS(Windowsとか)の上にDockerエンジンが乗っかり、その上にコンテナがある。
そんなイメージでソフトウェアを動かしている。元々コンテナの中にはLinux OSのようなものが入っているらしく、少しであればコンテナ内でLinuxコマンドが使える。Linuxにもいろいろな系統があり、Red Hat、CentOS、Debian、Ubuntuと様々。コンテナを改造したいときはLinuxを使う。どう改造するのかはわからない。
docker-composeとDockerfileの違い
Dockerfileとはimageを形にすることで他のPCに環境を共有できる便利なもの。
docker-composeとはDockerコマンドでコンテナの名前、ネットワークの名前、接続、各ソフトウェアの初期設定などを一環して行うものだという認識で今のところいる。
Volumeってなんや?
コンテナを消しても残るやつ。いまはこの程度の理解でいいと思った。理解出来たらとても便利なものとは知っているがとりあえず。
それよりもバインドマウントがしっかりできるようになりたい。
Windowsのデスクトップを想像してみてほしい。アプリをインストールするとショートカットをデスクトップに作成するかと聞かれることが多いと思う。アプリはOSごとに保存される場所が決まっており、WindowsであればProgram Filesとかに多分だいたい保存される。
大本はDockerのコンテナ内にあるが、ホストOSの方へショートカットみたいな形で持ってこれるらしい。
なのでフォルダ内でアプリがつくれてしまうという便利な機能。
データの保存先が本体のフォルダかDockerの中かの違いなのかなと。
最後に
よし、プログラミングを始めよう!と決心し、環境構築から入る人がほとんどなのかは分かりませんが、パソコン本体にいろいろ高機能言語やフレームワークをグローバルインストール(例えばVue.jsやpython)して環境変数を直接いじっていると謎のエラーが多発し開発どころじゃなくなることがあります。
ぐちゃぐちゃになったものを直すのはとてつもなく時間がかかると思います。もういっそフォーマットしたほうが楽ですが毎回するわけにもいきません。
そんなときにDockerを知りました。「環境構築ミスったらコンテナ消せばいっか」と。
このまま学習を続けて一人で環境構築ができるように頑張ります。使う側ではなく作る側を目指します。
次の記事は実践編。