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を使って学習してみた!

Posted at

はじめに

今回、Dockerを使用するのにあたって学習したことをまとめてみました。

Dockerとは

Dockerとは、軽量で高速に動作するコンテナ型仮想環境用のプラットフォームです。Dockerを使うことで、1台のサーバー上で様々なアプリケーションを手軽に仮想化・実行できる。

Dockerの利点

  1. 1台のサーバー上に複数のアプリケーション実行環境(Dockerコンテナ)を作成・利用できる
  2. アプリケーション実行環境(Dockerコンテナ)の他サーバーなどへの移転、他ユーザーとの共有※Dockerコンテナの移転や共有は複雑で手間のかかる操作を必要とせず、簡単に実行可能
  3. Dockerコンテナでアプリケーションの開発環境を作成し、インターネット上で他エンジニアと簡単に共有できる

基本用語

  • イメージ(image)
    • Dockerイメージはアプリケーションやその実行環境をまとめたテンプレートである。コンテナはこのイメージを元に実行される。例えば、Node.jsを動かす場合はnode:14やMySQLの場合はmysql:5.7など公式に提供されている
  • コンテナ(Container)
    • コンテナは、イメージから作成される実行環境そのものであり、一つのコンテナは一つのプロセスを実行するのが基本である
  • Dockerfile
    • Dockerfileはカスタムイメージを作成するための設定ファイルである。Dockerfileに記述された手順に従ってDockerがイメージを構築する
  • Docker Compose
    • Docker Composeは、複数のコンテナをまとめて管理するツールである。YAML形式の設定ファイルを使い、どのイメージを使用するか、どのポートを公開するかなどを記述できる

Dockerfile

Dockerfileは、イメージ作成のための「レシピ」である。

Dockerfile
FROM node:14

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

CMD ["npm", "start"]

EXPOSE 3000
  • FROM
    • 使用するベースイメージを指定。この場合はnode:14を使用している
  • WORKDIR
    • 作業ディレクトリを設定。以降の操作はこのディレクトリを基準に実行
  • COPY
    • ホストのファイルをコンテナ内にコピーする
  • RUN
    • コンテナ作成時に実行されるコマンド。この場合では依存関係をインストールしている
  • CMD
    • コンテナ起動時に実行されるコマンドを指定
  • EXPOSE
    • コンテナが使用するポートを指定

Docker Compose

Docker Composeは複数のコンテナを一括で管理するツールである。

docker-compose.yml
version: "3.8"
services:
    wordpress:
        image: wordpress
        ports:
            - "8000:80"
        environment:
            WORDPRESS_DB_HOST: db
            WORDPRESS_DB_USER: user
            WORDPRESS_DB_PASSWORD: password
            WORDPRESS_DB_NAME: wordpress
        depends_on:
            - db
db:
    image: myspl:5.7
    environment:
        MYSQL_ROOT_PASSWORD: password
        MYSQL_DATABASE: wordpress
        MYSQL_USER: user
        MYSQL_PASSWORD: password
  • version:
    • docker-compose.ymlのバージョンを指定
  • services:
    • サービス名をwardpressと定義。docker-compose upコマンドを使うと、この名前でコンテナが作成される
  • image:
    • 使用するDockerイメージを指定。この場合はWordPressの公式イメージを使用している
  • ports:
    • ホストとコンテナ間のポートマッピングを指定。この場合はホストの8000番ポートをコンテナ内の80番ポートに紐付けしている
  • environment:
    • 環境変数を設定。ここではWordPressが使用するデータベース接続情報をここで指定
      • WORDPRESS_DB_HOST: データベースのホスト名
      • WORDPRESS_DB_USER: データベースのユーザー名
      • WORDPRESS_DB_PASSWORD: データベースのパスワード
      • WORDPRESS_DB_NAME: 使用するデータベース名
  • depends_on:
    • wordpressサービスがdbサービスに依存していることを指定している。これにより、dbサービスが先に起動される
  • db:
    • MySQLデータベースの設定
      • image:使用するイメージ(mysql:5.7)を指定
      • environment:MySQLの初期設定を指定

Docker Composeコマンド

設定ができたらdocker-composeコマンドでDockerを起動

  • docker-compose --build
    • Dockerイメージを構築する
  • docker-compose up
    • 構築したDockerを起動する
  • docker-compose stop
    • 起動したDockerを一時停止する
  • docker-compose down
    • 構築したDockerを削除する

まとめ

Dockerはアプリケーションの開発・デプロイをするために便利なツールであり、どの環境でも同じアプリが動作する一貫性のある環境を提供でき、必要なリソースをすぐにセットアップ可能なので迅速なデプロイの実現を可能。軽量で高速なため仮想マシンよりリソース消費が少ない、Docker Composeで簡単に連携し複数のサービス管理をしやすいメリットがある。

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?