9
6

"Dockerって何? 簡単な言葉で解説するDockerの基本"

Last updated at Posted at 2023-10-18

はじめに

Dockerを使って開発環境を共有している現場が多くあります。
未経験エンジニアで現場に入った際、Dockerについて理解していると、スムーズに作業に入ることができると思います。
Dockerの基本について、かなり嚙み砕いてまとめたので、備忘録として残します。

目次

  • Docker(ドッカー)とは
  • Dockerの機能と用語説明
  • Dockerコマンド(基本)

Docker(ドッカー)とは

1台のサーバー上で様々なアプリケーションを手軽に仮想化・実行できるようにするためのプラットフォームのこと。
Dockerコンテナと呼ばれるアプリケーションの実行環境を、1台のサーバー上に作成することができる。
Dockerコンテナを作成するための設計図であるDockerイメージを共有することで、他ユーザーでも簡単に同じ開発環境のDockerコンテナを使ってアプリケーションを実行できる。
20231018-Dockerのイメージ図.png

Dockerの機能と用語説明

Dockerコンテナ

システムの他の部分に影響を与えることなく、アプリケーションを実行できる仮想空間のような隔離された環境で、すべてのコードと依存関係がパッケージ化されている。

Dockerイメージ

アプリケーションの実行に必要なソースコード、依存関係、ツールを含んだパッケージで、コンテナ作成時に指示を出す読み取り専用のファイル。

Dockerfile

Dockerイメージを構成するテキストデータで、Dockerfileを読み込むことでDockerイメージが構築される。

dockerfile
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ファイルは複数のコンテナ間の関係や環境変数などを記述する。

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環境を構築・利用するためのツールで、画面上でコンテナの停止や再開、廃止といった操作が可能。
20231018-dockerDesktop.png

Docker Hub

Dockerイメージの共有サービス。Dockerイメージ(Dockerfile)が公開されており、Docker Hubから任意のイメージ(Dockerfile)を取得できる。自身で作成したイメージ(Dockerfile)をリポジトリにアップし、他ユーザーと共有することも可能。
20231018-DockerHub.png

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を導入する記事も投稿したいと思います!

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6