はじめに
Dockerを使って開発環境を共有している現場が多くあります。
未経験エンジニアで現場に入った際、Dockerについて理解していると、スムーズに作業に入ることができると思います。
Dockerの基本について、かなり嚙み砕いてまとめたので、備忘録として残します。
目次
- Docker(ドッカー)とは
- Dockerの機能と用語説明
- Dockerコマンド(基本)
Docker(ドッカー)とは
1台のサーバー上で様々なアプリケーションを手軽に仮想化・実行できるようにするためのプラットフォームのこと。
Dockerコンテナと呼ばれるアプリケーションの実行環境を、1台のサーバー上に作成することができる。
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
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 Hub
Dockerイメージの共有サービス。Dockerイメージ(Dockerfile)が公開されており、Docker Hubから任意のイメージ(Dockerfile)を取得できる。自身で作成したイメージ(Dockerfile)をリポジトリにアップし、他ユーザーと共有することも可能。
Dockerコマンド(基本)
build
DockerfileからDockerイメージを作成する
docker image build [オプション] Dockerfileのパス
//例
docker image build -t imagename/nginx:latest .
[-t] イメージ名・タグ名を指定するオプション
run
Dockerイメージを使いDockerコンテナを起動(作成)する
docker container run [オプション] imagename
//例
docker container run --name containername -d -p 8080:80 imagename
[--name] コンテナ名を指定するオプション
[-d] コンテナをバックグラウンドで実行するオプション
[-p] コンテナのポート番号と、サーバーのポート番号を紐づけるオプション
start
作成済(停止中)のコンテナを起動する
docker container start [オプション] containername
//例
docker container start containername
stop
Dockerコンテナを停止する
docker container stop [オプション] containername
//例
docker container stop containername
rm
停止中のコンテナを削除する
docker container rm [オプション] containername
//例
docker container rm containername
[-f] コンテナ起動中でも削除
restart
コンテナを再起動する
docker container restart [オプション] containername
//例
docker container restart containername
exec
起動中のコンテナ内でコマンドを実行する
docker container exec [オプション] containername コマンド
//例
docker container exec -it containername bash
[-it] コンテナ側のコマンドの入出力を手元のターミナルに移行する
参考サイト
最後に
この記事では、Dockerの基本について噛み砕いて説明してみました。
Dockerは開発環境を共有し、アプリケーションの実行をスムーズに行うための強力なツールなので、使えるとかなり便利ですね。
次回は実際にDockerを導入する記事も投稿したいと思います!