Docker入門してみた

こんにちは、@Yoshimiです。

仕事でDockerに触れることになりました。そもそもインフラとか苦手なのですが、これを機に克服していきたいと思っています。

Dockerって何?

Docker(ドッカー)とはDocker Inc.(旧DotCloud社)によって開発されたコンテナ仮想化ツールのことです。

仮想化といえば、1台のサーバー上に、複数のサーバーとして利用できる仕組みを構築する方法ですね。Dockerはその仮想化をコンテナ型として実行・配布をしています。

港にあるコンテナをイメージしていただけると導入・運用の理解も早いと思います。

メリット

Dockerは、Linuxのコンテナ技術を使ったもので、よく仮想マシンと比較されます。
今まで?良く使われていたVirtualBoxなどの仮想マシンでは、ホストOS上にそれぞれ個別のOSを呼び出し仮想環境を立ち上げます。それに対し、コンテナはホストマシンのカーネルを利用し、プロセスやユーザなどをコンテナに隔離する(パッケージのようにする)ことで、あたかも別のマシンが動いているかのように動かすことができます。そのため、軽量で高速に起動、停止などが可能となるわけです。

メリットを3つに集約すると下記3点です。

  • 起動・処理が速い
  • プログラムサイズ、移動のしやすさが軽い
  • 開発環境と本番環境への移行がスムーズ

DockerにはImageというのがあり、コンテナを生成する元のようなモノなのですが、これがまた素晴らしくいわゆるテンプレートなのですが、imageを渡すことで、その人も全く同じコンテナを作成することが可能になるのです。開発環境を整えるのはとにかくエラーがつきものです。ですので、DockerのImageがあれば開発環境準備の短縮化にもなります。

デメリット

Dockerにはメリットばかりでもないのです。意識する程度でも良いですが、やはり注意するところはあります。

「同一のOSから複数のコンテナを作成するため、OS違いの検証は別のマシンまたは仮想マシンを使用しなければならない」というのがあります。

しかし、Dockerのコンテナは軽さ・早さが売りです。コンテナ一つ一つに必要なリソースが少ないため、よほどのことがない限りは気にすることはないと思います。

Dockerの使い方

インストール・流れ

小難しい設定な抜きにします。環境はmacOS:Catalinaです。

1.インストール
公式サイト(https://www.docker.com/)のメニュー「Get Started」からダウンロードします。
macOSの場合、案内に従って「Docker CE for Mac」をインストールします。
Dockerのアカウントを作っていなかったら作ってください。
Docker Hub(https://hub.docker.com/)のアカウントも作ってください。使い慣れてきたらのことですが、imageを保管したりGitHubと連携するのに使います。

2.imageを元にコンテナを生成します。
コンテナが仮想環境となり、そこで作業を行います。
基本的なコマンドは後述。

3.仮想環境の終了
コンテナをストップします。

ちなみに、CEとはCommunity Editionのことです。無料版ですが有料版と遜色なく利用できるので十分です。
dockerを使用する際は、アプリケーションから「Docker」を起動すると、ターミナルから使用することができます。

よく使う基本的なコマンド

・コンテナの元となるイメージを取得

・コンテナ一覧を表示

-aはオプションで、稼働していないコンテナまで表示させます。

・コンテナの停止、再起動

コンテナIDの確認はdocker ps -aで可能です。

・コンテナを削除する

コンテナの削除はSTOPしてから実行します。
コンテナの削除は複数まとめて可能です。その場合は、docker rm コンテナID コンテナID コンテナIDと続けて記述します。

・イメージを削除する

最後に

今回は、超入門として、そして、私の復習もかねて、基本的な内容をご紹介しました。
最近は、Dockerの記事も多くなってきているので「仮想環境とDockerどっちを勉強した方が良いの?」と思うと思います。機械学習のスクールでお話を伺った際、「どちらかということでなくDockerは使えると良い。」という回答だったので、どちらも使えることがエンジニアとしての価値をあげるのだと思います。

しかし、友人からも聞きましたがDockerを使う案件は増えてきているようですね。

ABOUTこの記事をかいた人

Yoshimi

大学卒業して、キラキラしていたのでIT業界にはいりましたが、中身はブラックでした!!だから、投資技術を磨いて早くリタイヤしたいです。株価、Python、機械学習をもうもう勉強中です。