Site icon imageHYPERCUBE

Post title iconDocker & Docker Compose 備忘録

お疲れ様です,Mass です.

いつも開発環境の立ち上げ時にDev Containerで楽をしていてDockerの使い方を忘れるので備忘録を残します.

環境構築

Dockerのインストールは省略.
Docker Desktopを利用.

Docker 編

1. Dockerfile作成

Dockerfileの配置場所は任意.

# FROMはベースとなるコンテナのOSイメージを指定
# AS [ステージ名] でステージ名を定義
FROM ubuntu:latest AS builder

# WORKDIRはディレクトリの絶対パスを指定
# この命令を書いた行以降はこのディレクトリで操作が行われる
WORKDIR /app

# RUNは指定されたシェルコマンドを実行
# build-essential は ビルドツールをまとめたパッケージ
# apt-get clean と rm -rf /var/lib/apt/lists/* はイメージサイズ縮小用
RUN apt-get update && apt-get install -y \\
	build-essential \\
	&& apt-get clean \\
    && rm -rf /var/lib/apt/lists/*

# CMDはコンテナ起動時にデフォルトで実行されるコマンド
# RUN はレイヤを作るが,CMDはレイヤを作らない点に注意
# 起動後に対話形式で操作がしたかったためbashを起動(exec形式で記述)
CMD ["/bin/bash"]

#ビルドターゲットステージがdevの場合,以下をbuilder部分の実行後に実行
FROM builder AS dev
RUN apt-get update && apt-get install -y \\
    git \\
    curl
RUN git config --global --add safe.directory /app

#ビルドターゲットステージがprodの場合,以下をbuilder部分の実行後に実行
FROM builder AS prod
# COPYは指定したファイルやディレクトリをコンテナ内にコピーする
# COPY [コピー元] [コピー先]
COPY ./src /app/src

2. Dockerイメージ作成

docker build

Dockerfileがあるディレクトリにてdocker buildコマンドを実行.

# docker build <DOCKERFILE_DIRECTORY> -t <IMAGE_NAME>:<TAG>
docker build . -t hogeimage:latest

docker image lsでイメージの作成に成功したか確認する.

docker image ls

3. Dockerコンテナ作成&起動

docker run

docker runコマンドで作成&起動.
{IMAGE ID}の部分はdocker image lsを実行した際に表示されたIMAGE IDを指定する.

docker run -it [IMAGE ID]
docker start

コンテナ作成後はdocker startコマンドで起動.

docker run [CONTAINER ID]

4. Dockerコンテナ停止&削除

docker stop

docker stopコマンドでコンテナを停止.

docker stop [CONTAINER ID]
docker rm

コンテナ停止後docker rmコマンドでコンテナを削除.

docker rm [CONTAINER ID]

5. Dockerコンテナ内に入る

docker exec

docker execコマンドでコンテナ内に入り,bashシェルを立ち上げ.

docker exec -it [CONTAINER_NAME] bash

Docker Compose 編

1. Dockerfile作成

Docker編と同じなので省略.

2. compose.yml作成

Docker Compose を利用することで複数のコンテナを一括管理できる.(今回は単一コンテナ)
compose.ymlにコンテナ構成を記述する.

services:
  app: #サービス名
    build:
      context: . # docker build コマンドを実行した場所を指定
      target: dev # マルチステージビルドのターゲットステージを指定
    volumes:
      - .:/app # ホスト-コンテナ間のファイルマウント設定 [ホスト側]:[コンテナ側]
    env_file:
      - .env # 環境変数のパスを指定
    ports: # ホスト-コンテナ間のポートマッピング設定 [ホスト側]:[コンテナ側]
      - 8080:8080

2. Dockerイメージ作成

docker-compose build

docker-compose buildコマンドでイメージのみの作成ができる.

docker-compose build

3. Dockerコンテナ作成&起動

docker-compose up

docker-compose upコマンドでイメージのキャッシュがある場合はイメージの構築から,コンテナの作成&起動を行う.

docker-compose up

イメージのキャッシュが無い場合は--buildオプションをつけることでイメージの作成から行う.

docker-compose --build
docker-compose start

docker-compose startコマンドで既存のコンテナを起動.

docker-compose start

4. Dockerコンテナ停止&削除

docker-compose down

docker-compose downコマンドでコンテナの停止&削除を実行.

docker-compose down
docker-compose stop

docker-compose downコマンドでコンテナの停止のみ実行.

docker-compose stop

5. Dockerコンテナ内に入る

docker-compose exec

docker-compose execコマンドでコンテナ内に入り,bashシェルを立ち上げ.

docker-compose exec [サービス名] bash

参考記事