Dockerとは
- Dockerは、アプリケーションの実行に必要な環境を1つのイメージにまとめ、そのイメージを使い、さまざまな環境でアプリケーション実行環境を構築・運用するためのプラットフォーム
- Dockerではコンテナという技術を使い、アプリケーションを他のプロセスから隔離して動作させる
- コンテナ内のアプリケーションから見ると、独立したコンピュータ上で動作しているように振る舞う
- 仮想マシンのようにOS全体を起動する方式ではないため、比較的軽量に起動しやすい
Dockerはいつ使われるのか
- アプリケーション開発で多く使われる
- 理由は、チームの開発環境を同じにできるため
- インストールしているアプリケーションやOSのバージョンなどは個々によって異なり、皆が同じ環境を持っていることはほぼない
- チームで開発をする際、それぞれのPCの状態が違うとアプリケーションの動きも違ってくる(→正しく開発が進められない)
- 理由は、チームの開発環境を同じにできるため
開発に必要なソフトをまとめて用意でき、メンバーの開発環境を同じ状態にできるのがDockerのメリット
Dockerのインストール(Mac)
1. Apple silicon版またはIntel chip版を選んでダウンロードする
例)Apple silicon版の場合: Docker Desktop for Mac with Apple silicon ボタンを押下
2. Applicationにドラック&ドロップ
3. Dockerアプリを起動したらメニューバー(Macの画面上部)にクジラアイコンが表示される
4. iTerm2(terminal)でバージョンを確認
$ docker --version
Docker version 27.4.0, build bde2b89
と、上記のように表示されていればOK!
Dockerの仕組み
$ docker run hello-world
Hello from Docker!と出力されていたら成功
起こっていること
Dockerが何をしているのかをしっかりと理解しておくことが大事
$ docker run hello-worldとコマンドを実行することで
1. Dockerクライアント(依頼主)がDockerデーモン(バックグラウンドで動作し続けるアプリ)にコマンドを送る
※Dockerクライアントは、ターミナルで実行する docker コマンドのこと
2. Dockerデーモンがコマンドを受け取る
3. hello-worldイメージを確認する
hello-world イメージがローカルにない場合、Docker HubなどのDockerレジストリから取得する
4. 取得したイメージからコンテナを作成して起動する
5. コンテナ内の処理が実行され、Hello from Docker! と表示される
| 用語 | 説明 |
|---|---|
| Dockerイメージ | コンテナを作成するためのテンプレート。アプリケーションを動かすために必要なファイル、ライブラリ、設定などを含む |
| Dockerレジストリ | Dockerイメージを保存・共有する場所。Docker Hubは代表的なDockerレジストリ |
| Dockerコンテナ | Dockerイメージをもとに構築されるアプリケーションの実行環境のこと(後述) |
コンテナとは
コンテナとは、ホストOS上に他のプロセスから隔離された論理的な区画を作り、その中でアプリケーションを動作させる仕組みのこと。
コンテナはDockerイメージをもとに作成され、アプリケーションの実行に必要なファイルやライブラリ、設定などを持った状態で動作する。
そのため、コンテナ内のアプリケーションから見ると、独立したコンピュータ上で動作しているように振る舞う。
ただし、コンテナは仮想マシンのようにOS全体を起動するわけではない。ホストOSのカーネルを共有して動作するため、仮想マシンと比べて軽量に扱いやすい。
Linux
- LinuxはOSの一種
- OSはコンピュータを動かすための基本ソフトのこと
- Webサービスのサーバー環境では、Linuxが使われることが多い
Dockerで扱うコンテナイメージには、Linux系のファイルやライブラリをベースにしたものが多いため、基本的なLinuxコマンドを知っておくと役立つ
Docker使用時の注意点
1. 容量が減らない場合がある
- Dockerを使っていると、停止済みのコンテナ、使っていないイメージ、ビルドキャッシュなどが残り、PCの容量を圧迫することがある
- 気づかないうちにPCの容量が足りなくなってしまうことも
- 未使用のDockerデータを削除したい場合は、下記コマンドを実行する
$ docker system prune
docker system prune は、停止済みコンテナ、使われていないネットワーク、dangling image、未使用のビルドキャッシュなどを削除するコマンドです。
ボリュームはデフォルトでは削除されません。すべての未使用イメージまで削除したい場合は -a、ボリュームも削除したい場合は --volumes を指定します。
必要なコンテナやイメージまで削除しないよう、実行前に内容を確認してください。
2. 仮想マシンとは用途が異なる
- Docker以外の
VMwarePlayerなどは別のOSの仮想環境を作ることが可能- VMwarePlayerの例:WindowsのPCにLinuxの仮想環境を作り、Linuxでしか使えないアプリケーションを使うことが可能
- DockerはPCに元々入っているOSからコンテナという仮想環境を作る
- そのため、仮想マシンのように別のOS全体を起動する用途には向いていない
- Dockerは、アプリケーションの実行環境をそろえる目的に向いている
どのような環境が必要なのか、どんな利用をするのかを考えてDockerを利用する
NextStep