RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

Dockerとは一体何なんだ?【初心者向け】

初めに

皆さんこんにちは。
開発課のm_tkoです。
Dockerについて、
「とりあえず手軽にアプリケーションの実行環境作れるらしいぞ」
という印象だけで生きていたので、仕組みをいまいち理解できていませんでした。
一体どういう仕組みになっているのか、まずは大枠だけでも理解しようと思いこの記事を作成しました。
最後までお付き合いいただけると嬉しいです。

目次

Dockerの超概要

Dockerについて一言でまとめると

Docker社が開発したコンテナを用いた仮想環境を作成・配布・実行するためのプラットフォーム

になります。

初心者の自分からすると、
 「そもそもコンテナって何?仮想マシンを使ったときとどう違うの?」
 「作成・配布・実行ってどうやってやるの?」
という疑問が浮かびました。

この二つを理解するために、まず構成と実行に分けつつ、以下キーワードにフォーカスを当てて見ていくことにします。

  • Dockerの構成
    • Dockerコンテナ
    • Dockerイメージ
    • Dockerボリューム
  • Dockerの実行
    • Dockerコマンド
    • Docker Compose

※元々はLinuxに特化した技術でしたが、近年ではWindowsmacOSで実行するための仕組みがDocker社から提供されています。
 この記事ではLinuxでの利用を想定して解説していきます。

Dockerの構成

基本構成と利点について記載します。

Dockerコンテナとは?

概要

一つのOS上で、CPU・メモリ・プロセス空間などが独立した仮想環境のことをコンテナと呼びます。
従来の仮想化では、VMWareなどの仮想化ソフトウェアを用いて、ホストOS上にゲストOSを構築する形式でした。
しかし、DockerコンテナはホストOS上にゲストOSなしで独立した仮想環境として構築されます。
Dockerコンテナを利用する場合は、Docker Engineをインストールすることでコンテナの操作を行うことができます。

仮想マシンとDockerの違い

利点

  • 低コストに仮想環境が作成できる
    両者の違いを簡単にまとめると、
    • 仮想マシンを用いた場合:
      → OSから構築が必要
    • コンテナエンジンを用いた場合:
      → 一つのOS上で独立した環境を構築できる

    となります。
    コンテナは一つのOS上で構築が可能であるため、OS関連のリソースを増やすことなく低コストに仮想環境が作成できます。

  • ポータビリティがある
    コンテナ内のみでアプリケーションの動作環境が完結するため、コンテナを丸ごとコピーして他サーバに持ち出すことが可能です。

Dockerイメージとは?

概要

Dockerコンテナ自体は空の箱のようなものなので、活用するためにはアプリケーションやライブラリを入れる必要があります。
そのDockerコンテナ作りを支援するために、アプリケーションの実行に必要なものを一通り揃えたアーカイブパッケージがDockerイメージです。

Dockerイメージの中には、

などが入っています。

Dokcer社が運営している「Docker Hub」というクラウドサービスで公開されており、そこからダウンロードすることが可能です。

利点

  • 少ない手順でアプリケーションの構築ができる
     DokcerコンテナもDockerイメージも用いずに構築しようと思うと、

    1. そのアプリケーションが動作する言語やライブラリのインストール
    2. データを保存するためのDBをインストール
    3. それらを適切に設定

 といった手順が必要になります。

しかし、DokcerコンテナとDockerイメージを用いた場合、Dockerイメージの中にアプリケーションの実行に必要なものや設定が一通り揃っているため、従来よりも少ない手順で構築が可能です。

補足

  • Dockerfileについて
    Dockerイメージを作成するための手順を記したテキストファイルのことを、Dockerfileと呼びます。
    このファイルを読み込むことでDockerイメージを作成することも可能です。
  • Dockerイメージの中身について
    Dockerイメージには、必ずしもアプリケーション本体が入っているわけではありません。
    UbuntuCentOSなど、Linuxディストリビューションだけで構成されているものもあり、これを用いて独自のコンテナを自由に作ることも可能です。

Dockerボリュームとは?

概要

Dokcerコンテナで利用するデータを保持するためのDocker Engine上の領域のことを、Dockerボリュームと呼びます。
Dokcerコンテナ上のディレクトリからマウントすることが可能です。

Dockerボリュームのイメージ

利点

  • 永続化が可能
    Dokcerコンテナ内にデータを保存した場合、Dokcerコンテナを破棄すると一緒に消えてしまいます。
    しかし、DokcerボリュームにマウントしておくとDokcerコンテナを破棄した際にもデータは保持されます。
  • 管理方法が汎用的
    Dokcerコンテナは、DokcerボリュームだけでなくDocker Engineがインストールされているサーバのディレクトリに対してマウントすることも可能です。
    しかし、この場合ディレクトリの位置は管理者によって異なる可能性があります。
    Dokcerボリュームの場合、Docker Engineを通して管理が行われるため、物理的な配置先を意識する必要なく汎用的に利用することができます。

Dockerの実行

基本的な操作・実行方法について記載します。

Dockerコマンドとは?

概要

Dockerの起動や停止は基本的にコマンドを用いて実行します。
そのコマンドのことをDockerコマンドと呼びます。
書式は以下のようになります。

docker コマンド オプション  

コマンドについて

基本的な操作を行う上で使用するコマンドを一部紹介します。
その他の全てのコマンドについてはDockerコマンドリファレンスをご参照ください。

Dockerコンテナの操作

◆ Dockerコンテナの作成・起動・停止のために使用するコマンド

コマンド 操作
docker create 新しいDockerコンテナを作成する
docker start 作成済みのDockerコンテナの起動
docker run 新しいDockerコンテナを作成&起動する
docker stop 作成済みのDockerコンテナを停止する
docker rm 作成済みのDockerコンテナを削除する

◆ 情報を参照するために使用するコマンド

コマンド 操作
docker ps Dockerのコンテナ一覧を表示する
docker logs Dockerコンテナのログを表示する
docker inspect Dockerコンテナの詳細情報を表示する

Dockerイメージの操作

docker imageのあとにコマンドを指定することでDockerイメージの操作ができます。

◆ Dockerイメージの作成・読み込み・削除をするために使用するコマンド

コマンド 操作
docker image build DockerfileからDockerイメージを作成する
docker image pull レジストリからDockerイメージを取得する
docker image load Dockerイメージを読み込む
docker image rm Dockerイメージを削除する

◆ 情報を参照するために使用するコマンド

コマンド 操作
docker image ls Dockerイメージの一覧を表示する
docker image inspect Dockerイメージの詳細情報を表示する
docker image history Dockerイメージの更新履歴を表示する

Dockerボリュームの操作

docker volumeのあとにコマンドを指定することでDockerボリュームの操作ができます。

◆ Dockerボリュームの作成・削除をするために使用するコマンド

コマンド 操作
docker volume create Dockerボリュームを作成する
docker volume rm Dockerボリュームを削除する
docker volume prune DockerコンテナからマウントされていないDockerボリュームを全て削除する

◆ 情報を参照するために使用するコマンド

コマンド 操作
docker volume ls Dockerボリュームの一覧を参照する
docker volume inspect Dockerボリュームの詳細情報を参照する

基本操作イメージ

コンテナ作成~停止までのイメージ図は以下になります。

Dockerコンテナ作成~停止イメージ図

補足

  • docker runについて
    docker runは以下の3つの操作をまとめて実行するコマンドになります。
    • Dockerイメージの取得(docker image pull)
    • DockerイメージからDockerコンテナを作成(docker create)
    • 作成したDockerコンテナを起動(docker start)

Docker Composeとは?

概要

複数のDockerコンテナをまとめて起動や停止などができるツールをDocker Composeと呼びます。
例えば、アプリケーション本体のDockerコンテナとデータベースのDockerコンテナを組み合わせて構成する場合などに活用できます。

利用方法について

Docker Composeは「docker-compose.yml」というファイルに定義された内容を基にコンテナの操作を行います。
このファイルでは主に以下を定義します。

  • Dockerイメージをビルドするための情報
  • Dockerコンテナが利用するネットワークの情報
  • 利用するDockerボリュームの情報

※詳細な記載内容についてはDocker ドキュメント- Compose ファイル リファレンスをご参照ください。

Dockerコンテナなどの操作と同様、Docker Composeもコマンドでの実行となります。
コマンドを実行するとdocker-compose.ymlの内容を元にアプリケーションの構築を行います。

コマンドについて

Docker Composeの基本的な操作を行う上で使用する、コマンドを一部紹介します。
docker-composeのあとにコマンドを指定することで操作ができます。

◆ アプリケーションの起動・停止をするために使用するコマンド

コマンド 操作
docker-compose up Dockerコンテナの作成もしくは再起動する
docker-compose run Dockerコンテナの作成もしくは再起動する(サービスの指定が必要)
docker-compose start Dockerコンテナを起動する
docker-compose buid Dockerイメージを構築する
docker-compose down Dockerコンテナを停止&削除する
docker-compose stop Dockerコンテナを停止する
docker-compose rm Dockerコンテナを削除する

◆ 情報を参照するために使用するコマンド

コマンド 操作
docker-compose ps Dockerコンテナの一覧を表示する
docker-compose images Dockerイメージの一覧を表示する
docker-compose logs Dockerコンテナのログを表示する

まとめ

以上がDockerの概要についての解説となります。
本当に大枠しか触れられていませんが、Dockerに興味がある方の参考になったら幸いです。
最後までお読みいただきありがとうございました。
 

参考

参考文献

参考サイト


エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
20210916153018
https://career-recruit.rakus.co.jp/career_engineer/

カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.com

ラクスDevelopers登録フォーム
20220701175429
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/

イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!

◆TECH PLAY
techplay.jp

◆connpass
rakus.connpass.com

Copyright © RAKUS Co., Ltd. All rights reserved.