初めに
皆さんこんにちは。
開発課のm_tkoです。
Dockerについて、
「とりあえず手軽にアプリケーションの実行環境作れるらしいぞ」
という印象だけで生きていたので、仕組みをいまいち理解できていませんでした。
一体どういう仕組みになっているのか、まずは大枠だけでも理解しようと思いこの記事を作成しました。
最後までお付き合いいただけると嬉しいです。
目次
Dockerの超概要
Dockerについて一言でまとめると
Docker社が開発したコンテナを用いた仮想環境を作成・配布・実行するためのプラットフォーム
になります。
初心者の自分からすると、
「そもそもコンテナって何?仮想マシンを使ったときとどう違うの?」
「作成・配布・実行ってどうやってやるの?」
という疑問が浮かびました。
この二つを理解するために、まず構成と実行に分けつつ、以下キーワードにフォーカスを当てて見ていくことにします。
- Dockerの構成
- Dockerコンテナ
- Dockerイメージ
- Dockerボリューム
- Dockerの実行
- Dockerコマンド
- Docker Compose
※元々はLinuxに特化した技術でしたが、近年ではWindowsやmacOSで実行するための仕組みがDocker社から提供されています。
この記事ではLinuxでの利用を想定して解説していきます。
Dockerの構成
基本構成と利点について記載します。
Dockerコンテナとは?
概要
一つのOS上で、CPU・メモリ・プロセス空間などが独立した仮想環境のことをコンテナと呼びます。
従来の仮想化では、VMWareなどの仮想化ソフトウェアを用いて、ホストOS上にゲストOSを構築する形式でした。
しかし、DockerコンテナはホストOS上にゲストOSなしで独立した仮想環境として構築されます。
Dockerコンテナを利用する場合は、Docker Engineをインストールすることでコンテナの操作を行うことができます。
利点
- 低コストに仮想環境が作成できる
両者の違いを簡単にまとめると、- 仮想マシンを用いた場合:
→ OSから構築が必要 - コンテナエンジンを用いた場合:
→ 一つのOS上で独立した環境を構築できる
となります。
コンテナは一つのOS上で構築が可能であるため、OS関連のリソースを増やすことなく低コストに仮想環境が作成できます。 - 仮想マシンを用いた場合:
- ポータビリティがある
コンテナ内のみでアプリケーションの動作環境が完結するため、コンテナを丸ごとコピーして他サーバに持ち出すことが可能です。
Dockerイメージとは?
概要
Dockerコンテナ自体は空の箱のようなものなので、活用するためにはアプリケーションやライブラリを入れる必要があります。
そのDockerコンテナ作りを支援するために、アプリケーションの実行に必要なものを一通り揃えたアーカイブパッケージがDockerイメージです。
Dockerイメージの中には、
- アプリケーション本体
- ライブラリ
- フレームワーク
- 基本コマンド
などが入っています。
Dokcer社が運営している「Docker Hub」というクラウドサービスで公開されており、そこからダウンロードすることが可能です。
利点
少ない手順でアプリケーションの構築ができる
DokcerコンテナもDockerイメージも用いずに構築しようと思うと、- そのアプリケーションが動作する言語やライブラリのインストール
- データを保存するためのDBをインストール
- それらを適切に設定
といった手順が必要になります。
しかし、DokcerコンテナとDockerイメージを用いた場合、Dockerイメージの中にアプリケーションの実行に必要なものや設定が一通り揃っているため、従来よりも少ない手順で構築が可能です。
補足
- Dockerfileについて
Dockerイメージを作成するための手順を記したテキストファイルのことを、Dockerfileと呼びます。
このファイルを読み込むことでDockerイメージを作成することも可能です。 - Dockerイメージの中身について
Dockerイメージには、必ずしもアプリケーション本体が入っているわけではありません。
UbuntuやCentOSなど、Linuxディストリビューションだけで構成されているものもあり、これを用いて独自のコンテナを自由に作ることも可能です。
Dockerボリュームとは?
概要
Dokcerコンテナで利用するデータを保持するためのDocker Engine上の領域のことを、Dockerボリュームと呼びます。
Dokcerコンテナ上のディレクトリからマウントすることが可能です。
利点
- 永続化が可能
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 run
について
docker run
は以下の3つの操作をまとめて実行するコマンドになります。- Dockerイメージの取得(
docker image pull
) - DockerイメージからDockerコンテナを作成(
docker create
) - 作成したDockerコンテナを起動(
docker start
)
- Dockerイメージの取得(
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に興味がある方の参考になったら幸いです。
最後までお読みいただきありがとうございました。
参考
参考文献
参考サイト
- docker docs
- コンテナとは何か解説、従来の仮想化と何が違う?DockerやKubernetesとは?
- いまさら聞けないDocker/Kubernetes
- Docker入門(第一回)~Dockerとは何か、何が良いのか~
- Docker入門(第四回)~Dockerfileについて~
- Docker入門(第六回)〜Docker Compose〜
- コマンド一覧(イメージ管理編)
- コマンド一覧(Docker Compose編)
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/
カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
rakus.hubspotpagebuilder.com
ラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/
イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com