0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker チートブック

Last updated at Posted at 2025-04-12

目次

1. Dockerについて

Docker超入門講座 合併|ゼロから実践する4時間のフルコース
Dockerとはなにかを説明してくれている動画。

2. Dockerの導入について

Docker 導入方法(dotinstall)

3. Dockerfile、Docker Composeについて

3.1 Dockerfileについて

Dockerfileとは、口述するDockerイメージを作るための設計図である。
よくDockerfileとDockerイメージの違いについてわからなくなることがあるが、定義的には以下のように捉えると良い:

  • Dockerfile:設計図
  • Dockerイメージ:システムの完成品(実体なし)
  • Dockerコンテナ:システムの完成品(実体あり)

料理に例えると以下の通り:

  • Dockerfile:レシピ
  • Dockerイメージ:料理の完成品(写真)
  • Dockerコンテナ:提供された料理の完成品(実物)

3.2 Dockerfileの構成

FROM ベースイメージ名

ベースイメージでは、すでに用意された環境を仮想環境に搭載することができる。

例:

FROM php:8.2-apache

RUN コマンド

イメージ構築時に実行されるコマンドを記述する。

RUN apt-get update && apt-get install -y git

この場合はイメージ構築時にapt-getの更新とgitのダウンロードを行う。

WORKDIR ディレクトリ名

WORKDIRではその後の作業でのカレントディレクトリ(現在のディレクトリ)を設定する。

 WORKDIR /var/www/html

この場合は/var/www/htmlを作業ディレクトリとする。

COPY 自身のファイルパス イメージ内のコピー先

自身のファイルをイメージにコピーする

 COPY index.php /var/www/html/

この場合は自身のindex.phpをイメージ内の/var/www/html/にコピーする。

ADD URL or ファイル

COPYと違いURLなどからファイルをダウンロードする場合はADDを使う。

EXPOSE port番号

外部に公開するポート番号(いわゆる送受信のための出入口)を設定。設定する場合はDocker container run -pコマンドを使う必要がある。

その他の設定(必須じゃないけど知っとくと便利)

VOLUME 保存用のファイル

Dockerコンテナ内で作成されたファイルはコンテナを削除するとすべて消える。それらを保存するためにVOLUMEがある。

 VOLUME /data

この場合は/dataがボリュームとして自動的にDockerに管理される。

3.3 Docker composeについて

LAMP環境などは基本役割ごとにサーバーをDocker開発環境下ではコンテナを分けるべきである。ただ一つ一つのコンテナを定義実行管理するのは面倒くさい。その仕事を行うのがDocker composeである。
Docker composeの仕事は主に複数コンテナの起動・停止、状態確認、実行中サービスのログ確認をする。Doker composeは基本ymlを拡張子に持つ。

3.4 Docker composeの構成

version: '3.8'

使用しているDocker composeのバージョンを指定する。

seveices:

このセクションの仮想でコンテナを複数定義できる。

 services:
 任意の名前:
 	各設定
 任意の名前:
 	...
services内の設定

image: ベースイメージ名

そのコンテナのベースイメージの設定

container_name: コンテナ名

コンテナ名を指定、指定しない場合はランダム

volumes:ホスト側のフォルダ:コンテナ内のフォルダ

ホスト側の変更をコンテナ内の変更と同期させる(マウント)

port: "ホスト側のポート:コンテナ内のポート"

ホスト側のポートをコンテナのポートにマッピングする

高度な設定

depends_on:サービス名

ほかのサービスがある場合、ここに書くとそのサービスが先に起動するようになる。

restart:

設定されたコンテナが停止しても自動的に再起動する設定。(本番環境向き)。引数は以下の4つが存在する。

  • "no" : default 再起動しない
  • always : コンテナが削除されるまで停止しても起動し続ける
  • on-failure : exitコードがエラーを出した時だけ再起動する
  • unless-stopped : alwaysとほとんど同じだが手動で止めたら起動しない

environment: 環境変数設定

環境変数を設定する。MYSQLの設定などで使う

3.4 Docker composeのTips

volumeについて

基本volumeは前述したようにホスト側のファイル:コンテナ内のファイルという書き方をするが、単純に以下のように書くこともある。

volume:ホスト側のファイル

これは何がマウントされているかを明示するためだ。実際はDockerが自動でそのファイルをvolumeしてくれるが、開発規模が大きくなったときどのファイルをvolumeしているかわからなくなるため明示するほうがいい。

Docker composeとDockerfileの併用

コンテナ内に追加のライブラリを入れあい場合や設定ファイルを変更したい場合、テスト環境と開発環境を分けたい場合などは、各コンテナの招請を設定できるDockerfileを使うことができる。その時は以下の文章をDocker composeの任意のコンテナ設定内に追加する。

     build:
       context: ./web
       dockerfile: Dockerfile

4 Docker基本コマンド

dockerのイメージとは作りたい仮想環境の設計図のようなもの。イメージではDockerfileが指示書、Dockerイメージは設計図、Dockerコンテナが完成品のようなものである。

コンテナが一つの場合

4.1 Dockerのイメージを作成

 docker image build [オプション] パス/URL

よく使うオプション

 -t  イメージに名前とタグを付与
 例)docker image build -t myapp:1.0 .
 
 -f Dockerfileのファイル名を指定する(デフォルトはDockerfile)
 例) docker image build -f Dockerfile.dev .
 
 --build-arg Dockerfileに引数を入力
 例) docker image build --build-arg VERSION=18 .
 
  --pull ベースイメージを常に最新のものにする
  例) docker image build --pull -t myapp .

例文

 docker image build -t test:1.0 .

カレントディレクトリ下にDockerfileがあり、imageの名前をtest, versionが1.0の場合

4.2 Dockerコンテナの操作

コンテナの起動

 docker container run [オプション] イメージ名

よく使うオプション

-d バックグラウンドでコンテナを起動
例) docker container run -d image_name

-it コンテナに接続して中でコマンド実行できるようになる(対話モード)
例) docker container run -it image_name bash
 ‼ コンテナが起動してもすぐ閉じてしまう場合は-itをつける必要がある
 
 --name コンテナに任意の名前をつける
 例) docker container run -d --name image_name
 
 -p ホストのポートをコンテナのポートに転送する
 docker container run -p 8080:80 image_name
 
 -v コンテナ内で行った変更をマウントしてローカル環境に反映
 例) 
docker volume create mydata
 docker container run -d -v mydata:コンテナ内のディレクトリ image_name
 
 --network コンテナにネットワークを指定(複数のコンテナを同一ネットワーク内で使用するときに使う)
 例) docker network create mynet
   docker container run -d --network=mynet image_name

コンテナ内のshellを起動

 docker exec -it コンテナ名 bash 

コンテナの状態確認

 docker image ls イメージの表示 -aで実行されてないコンテナも確認可能
 docker container ls コンテナの表示
 docker container logs コンテナがどのように動いているかわかる

コンテナの削除、停止

 docker system prune -a 使っていないコンテナを止めることができる
 docker stop コンテナ名 特定のコンテナを止める

コンテナが複数の場合

4.3 複数コンテナの操作

複数コンテナの起動

 docker-compose up 
 -d バックグラウンド起動
 -y コンテナ起動時の回答をYesにする

複数コンテナの状態確認

 docker-compose ps コンテナの一覧表示
 docker-compose logs ログの表示(-f でリアルタイム監視)

複数コンテナの停止、削除、再起動

 docker-compose stop 停止
 docker-compose down 削除
 docker-compose restart 再起動

コンテナ内に入る

 docker-compose exec サービス名 bash
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?