目次
なぜDockerを使用するのか?
アプリケーションを1台または複数のサーバーにセットアップしてデプロイする作業は非常に大変です。アプリケーションに必要なツールや環境をインストールするところから始まり、アプリケーションを実行するまでの工程、さらには複数のサーバー間で環境が統一されていない問題もあります。このような理由から、この問題を解決するためにDockerが誕生しました。
Dockerって何?
1台のサーバー上で様々なアプリケーションを手軽に仮想化・実行できるようにするためのプラットフォームのこと。
Dockerコンテナと呼ばれるアプリケーションの実行環境を、1台のサーバー上に作成することができる。
Dockerコンテナを作成するための設計図であるDockerイメージを共有することで、他ユーザーでも簡単に同じ開発環境のDockerコンテナを使ってアプリケーションを実行できる。

Dockerのメリット
- 仮想マシンとは異なり、Dockerは数秒で起動および停止が可能です。
- 任意のシステムでコンテナを起動できます。
- コンテナは仮想マシンよりも高速にビルドおよび削除できます。
- 一度設定を行うだけで、依存関係を再インストールする必要がありません。別のマシンに移行する場合や、新しいメンバーがプロジェクトに参加する場合でも、その設定を共有すれば環境を簡単に構築できます。
- 環境を削除しても他の部分に影響を与えることなく、クリーンな作業スペースを保てます。
Dockerの機能と用語説明
Dockerコンテナ
システムの他の部分に影響を与えることなく、アプリケーションを実行できる仮想空間のような隔離された環境で、すべてのコードと依存関係がパッケージ化されている。
Dockerイメージ
アプリケーションの実行に必要なソースコード、依存関係、ツールを含んだパッケージで、コンテナ作成時に指示を出す読み取り専用のファイル。
Dockerfile
Dockerイメージを構成するテキストデータで、Dockerfileを読み込むことでDockerイメージが構築される。
FROM gradle:7.4.1-jdk11 AS builder
WORKDIR /tmp
COPY ./src ./src
COPY ./build.gradle .
RUN gradle build
FROM openjdk:11.0.14.1-oracle
COPY --from=builder /tmp/build/libs/app.jar /app/app.jar
EXPOSE 8080
- FROM: ベースイメージを指定します(例:
python
,ubuntu
,alpine
など)。 - LABEL: イメージにメタデータを提供します。メンテナー情報を追加する際に使用できます。イメージのラベルを確認するには、
docker inspect
コマンドを使用する。 - ENV: 環境変数を設定する。
- RUN: イメージのビルド時に実行するコマンドを指定します。パッケージのインストールなどに使用される。
- COPY: ファイルやディレクトリをコンテナ内にコピーしする。
- ADD: ファイルやディレクトリをコンテナ内にコピーします(
COPY
に似ていますが、圧縮ファイルを解凍したりリモートURLを扱う機能も持つ)。 - CMD: コンテナが実行するコマンドと引数を指定します。この設定は上書き可能で、
CMD
は1つだけ設定できる。 - WORKDIR: 他の命令(例:
RUN
,CMD
,ENTRYPOINT
,COPY
,ADD
など)の作業ディレクトリを設定する。 - ARG: イメージビルド時に使用される変数の値を定義する。
- ENTRYPOINT: コンテナが実行するコマンドと引数を指定します。
CMD
と異なり、上書きされにくい。 - EXPOSE: イメージがリッスンするポートを宣言する。
- VOLUME: データのアクセスや保存のためのマウントポイントを作成する。
Docker Compose
複数のコンテナを1度に操作することができるツール。Docker Composeの設定ファイルであるdocker-compose.ymlファイルは複数のコンテナ間の関係や環境変数などを記述する。
version: "3"
services:
spring-boot:
build:
context: ./web-spring2
dockerfile: Dockerfile
ports:
- "8080:8080"
depends_on:
mysql:
condition: service_started
entrypoint: "java -jar /app/app.jar"
networks:
- app-net
mysql:
build:
context: ./mysql
dockerfile: Dockerfile
ports:
- "3306:3306"
volumes:
- ./mysql/settings:/etc/mysql/conf.d/
- ./mysql/data/:/var/lib/mysql/
environment:
MYSQL_DATABASE: study
MYSQL_ROOT_PASSWORD: riku0456
networks:
- app-net
networks:
app-net:
driver: bridge
Docker Desktop
Windows・MacOS上でDocker環境を構築・利用するためのツールで、画面上でコンテナの停止や再開、廃止といった操作が可能。

Dockerコマンド(基本)
イメージ/コンテナをリストアップする
docker image/container ls
利用可能なコンテナをリストアップする
docker ps –a
特定のコンテナを停止する
docker stop <コンテナ名>
コンテナのログを確認する
docker logs <コンテナ名>
コンテナからイメージを構築する
docker build -t <コンテナ名>
コンテナを作成する(背景構築)
docker run -d <コンテナ名>
まとめ
この記事では、Dockerの基本について噛み砕いて説明してみました。
Dockerは開発環境を共有し、アプリケーションの実行をスムーズに行うための強力なツールなので、使えるとかなり便利ですね。