
【初心者向け】Dockerについて学ぼう
皆さんはDockerについてご存じでしょうか。
この記事はDockerについて知らない人や名前だけは知っている程度の人や、環境として利用している程度の人を対象にどんなものなのか、どういったメリットやデメリットがあるのかを調査し、まとめてみました。
1. Dockerとは

ドッカーと読みます。
Dockerは、コンテナ仮想化を用いてアプリケーションを開発・配置・実行するためのオープンプラットフォームです。
Dockerはコンテナ仮想化を用いたOSレベルの仮想化によりアプリケーションを開発・実行環境から隔離し、アプリケーションの素早い提供を可能にします。
かつ、その環境自体をアプリケーションと同じようにコード(イメージ)として管理可能にします。
Dockerを開発・テスト・デプロイに用いることで「コードを書く」と「コードが製品として実行される」間の時間的ギャップを大きく短縮できるようになります。
Dockerの歴史ですが、初版は2013年3月13日にリリースされました。2024年4月19日現在の最新版(2024年4月18日)は26.0.2です。
※ちなみに、Dockerの代表的なアイコンでもあるコンテナを乗せたクジラですが、「Moby Dock(モビー・ドック)」という名前だそうです。
2. Dockerのメリットとは

1.簡単に環境構築ができる
今までの開発では同じ環境を別のマシンで再現するためには多少の手順があり、操作ミスや手順の記憶違いなどのヒューマンエラーなどで開発が遅延してしまう可能性がありました。Dockerの場合は環境がまるごと提供されるため、少ない手順で困ることなくスピーディで正確に環境を構築することができます。
2.軽量でスピーディな開発ができる
コンテナは軽量のため、起動する速度は一瞬となります。仮想マシンの場合、OSをいくつも起動する必要があり、処理自体がかなり重くなってしまいます。
コンテナの場合、メモリやディスクの消費量を少なく抑えた状態で仮想化できるため、起動時間が短縮しスピーディな速度で開発に集中することができます。
3.ハードウェアの資源削減ができる
コンテナのサイズは非常に小さく、一つの物理サーバに多数のコンテナを稼働させることができます。その結果、物理サーバを購入するコストを削減することができます。
4.システムが共有化されている
Dockerの特徴はコンテナだけでなく、共有化サービスの「Docker Hub」があります。Docker Hubを利用すると、インターネットを通じて世界中の開発者の成果物を入手したり、成果物をアップロードすることができます。
5.物理サーバの考慮が不要になる
Dockerを活用すれば、システム開発者はハードウェアを気にしなくてもよくなるため、最初からアプリケーション開発に専念できます。6.モダンなエコシステムになる
Dockerを活用すれば、コードを早く提供でき、かつアプリケーションの環境も統一するためにリソース量を改善することができてコストを節約できます。7.GUIツールが使用できる
KubernetesやDockerUIなどのGUIツールを使うとより簡単に管理が行えるようになります。8.ロールバックが素早く行える
Dockerは変更を差分で保存するため、ロールバックを早く簡単に行うことができます。3. Dockerのデメリットとは

1.同一のOSを利用しなければならない
同一のOSから複数のコンテナを作成するためには、OS違いの検証は別のマシンまたは仮想マシンを使用しなければなりません。2.提供できるホストの種類が少ない
WindowsやMacで対応されてはいますが、Windows Serverには対応していません。Windows HomeのOSで使用する場合には、「Docker ToolBox」というソフトをインストールする必要があります。
3.習得に時間がかかる
Dockerはほかの仮想環境と構築手順が異なるため、習得に時間がかかります。特にDockerはファイルを作成する知識から、独自の構築をすべて理解していないと動作においてトラブルが発生する可能性も高くなってしまいます。
4. Dockerのインストール方法(Windows版)
1.https://www.docker.com/products/docker-desktopからDocker for Windows インストーラをダウンロードします。
2.[Download Desktop Windows] のダウンロードボタンをクリックします。
3.ダウンロードした[Docker for Windows Installer.exe]ファイルを、エクスプローラーから実行します。
4.ダウンロードが完了すると、Configrationの画面が表示されます。
5.チェックボックス画面が表示された場合、特に変更せずに次へ進み、インストーラが実行されて完了するまで待ちます。
6.インストールが正常に終了すると、「Installation succeeded…」というメッセージが表示されます。「Close」をクリックして、インストーラを終了します。
7.インストール終了後、デスクトップに表示される「Docker Desktop」のショートカットアイコンをクリックします。
8.Docker Desktopが起動します。初回の起動時にはライセンスの確認画面が表示されるので、「Accept」をクリックして先へ進みます。
9.画面が遷移します。次の画面で「Start」をクリックするとチュートリアルが開始されますが、「Skip…」をクリックし飛ばしても問題ありません。
10.チュートリアル完了後(スキップ後)、Docker Desktopの管理画面が表示されます。
※Docker Desktop管理画面の操作方法については、以下サイトのマニュアルで確認できます。
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/windows/
5. Dockerのインストール方法(Mac版)
1.https://www.docker.com/products/docker-desktopからDocker for Mac インストーラをダウンロードします。
2.MacのCPUには、「Intel chip」と「Apple silicon」の2種類が存在するため、自身のMacのCPUを確認し、どちらかを選択してインストーラをダウンロードします。
3.ダウンロードが完了した「Docker.dmg」を開きます。
4.ウィンドウが表示されます。矢印の通り、左側にあるDockerという名前のコンテナを乗せたクジラのアイコンを、右側のApplicationsフォルダにドラッグ&ドロップします。
5.インストールが完了したら、Finderを開いてメニューバーの「移動」から「アプリケーション」を開きます。
6.アプリケーションフォルダを開いたら、Dockerをダブルクリックします。
※セキュリティ警告が表示された場合、「開く」ボタンを押下します。
7.「Docker Desktop needs privileged access.」というメッセージ内容のアクセス権限要求画面が表示された場合、「OK」ボタンをクリックしてパスワードを入力します。
8.利用規約が表示されます。内容を確認して「Accept」をクリックします。
9.規約に同意後、Setting画面が表示されます。特に理由がない限り「Use recommended settings」を選択し、「Finish」をクリックします。
10.Desctop for Macが正常に起動できた場合には「ダッシュボード」が表示されます。
11.ターミナルを立ち上げ、「docker version」というコマンドを入力します。インストールされたDockerのバージョンが表示されたら成功です。
6. よく使うDockerコマンド

1.Dockerのバージョン確認
docker version
2.Dockerイメージ一覧
docker images
3.Dockerイメージの削除
docker rmi <イメージID>
4.Dockerコンテナの削除
docker rm <コンテナID>
5.すべてのDockerコンテナ状態確認
docker ps -a
6.現在起動中コンテナの確認
docker ps
7.コンテナ内部に入るコマンド
docker exec -i -t <コンテナ名またはコンテナID> bash
8.dockerを起動するコマンド
docker start <コンテナID>
9.docker commitによるイメージ作成
docker commit <コンテナID> <コンテナイメージ名:タグ>
10.docker runによるコンテナイメージからコンテナを起動
docker run <起動オプション> <コンテナイメージ> <コンテナ起動時に実行するコマンド>
11.docker pull によるコンテナイメージのダウンロード
docker pull <コンテナイメージの公開パス:タグ>
12.docker build コマンドを使ったコンテナイメージの作成
docker build -t <コンテナイメージ名:タグ> <Dockerfileが存在するディレクトリ>
13.コンテナレジストリへログイン
docker login -u <コンテナレジストリのユーザー名> -p <コンテナレジストリのパスワード> <コンテナレジストリのログインサーバー>
14.コンテナを停止する
docker stop <コンテナID>
15.コンテナを起動する
docker start <コンテナID>
16.コンテナを削除する
docker rm <コンテナID>
17.コンテナイメージを削除する
docker rmi <コンテナイメージID>
7. Dockerと仮想マシンの違い
よく比較されるサービスとして、VMwareやVirtualBoxなどの仮想マシンが挙げられます。
大きな違いはDockerが仮想化するのは『コンテナ』で仮想マシンは『OS』を仮想化する点になります。
Dockerは1つのOSに対して多数のコンテナを管理するため、マシンごとに独自のOSが搭載され多数のOSを管理する必要がある仮想マシンと比較して軽量で速いという特徴があります。
また、コンテナ作成に必要なリソースが少ないため導入が簡単ですぐに開始でき、開発の密度を高めることが可能です。
そのため同じハードウェアでより多くのサービスを実行できるため、コストも削減できます。
しかし、同じカーネル上で実行することの副作用として仮想マシンよりも分離度が低くなります。
実行しているOSに依存度が高いということになります。
8. まとめ
Dockerについて調査していく中でどういうものなのか学んでいきました。
この記事を読んだ方が少しでも理解していただけたら幸いです。