Dockerの環境構築は?理解を深める作業の流れを解説!
thumb_docker_01
Dockerの環境構築は?理解を深める作業の流れを解説!
アンドエンジニア編集部
2022.01.24
この記事でわかること
Dockerは環境の複製と配布が容易にでき、DevOps開発運用には欠かせないソリューションです
Dockerの環境構築では、Dockerfileを作成し作業を進めていきます
多くのソフトウェアは公開リポジトリにDockerイメージを公開しており、効果的に活用可能です

Dockerとは

img_dockerbuild_01

Dockerとは、OSレベルの仮想化プラットフォームソリューションです。Dockerイメージを用いたコンテナ仮想化システムを構築し、仮想化実行環境を実現します。Dockerにより環境の複製と配布が容易にできますので、開発のスクラップアンドビルドが効率的に実施できます。DevOps開発運用には欠かせないソリューションです。 【参考】:Docker

Dockerのメリットを徹底解説!仮想マシンとは何が違う?
Dockerとは?使いどころやメリット・デメリットについて解説!

Docker環境構築の事前作業

Dockerでは、Windows版・Mac版・Linux版のダウンロードモジュールが用意されています。Mac版・Windows版では、Docker Desktopを利用します。 Docker Desktopには、ダッシュボード・Docker Engine・Docker CLI・Docker Compose等が含まれます。Linux版ではDocker Engineをインストールしておきます。 【参考】:Get Started with Docker

Docker Windows版のセットアップ概要

Docker Desktopは、Docker Hubのサイトまたはドキュメントサイトからダウンロードできます。 【参考】:Docker Desktop for Windows 【参考】:Install Docker Desktop on Windows

インストール方法は以下の通りです。 ・ダウンロードモジュールの起動  Docker Desktop Installer.exeを起動します。

Configuration画面の確認  「Enable Hyper-V Windows Features」と「 Install required Windows components for WSL 2」のオプション設定を確認します。

インストール実行  手順に従い「Install」を選択し、終了後「Close」を選択します。

管理者アカウントの追加  管理者アカウントのadministratorとComputer Managementをdocker-usersグループに追加します。

最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能です。これでセットアップが完了しましたので、環境構築を行います。

Docker Mac版のセットアップ概要

Docker Desktopは、Docker Hubのサイトまたはドキュメントサイトからダウンロードできます。 【参考】:Docker Desktop for Mac 【参考】:Install Docker Desktop on Mac

インストール方法は以下の通りです。 ・ダウンロードモジュールの起動  Docker.dmgをダブルクリックしインストーラを起動します。

アプリケーションフォルダに登録  Dockerアイコン(Docker.app)をアプリケーションフォルダーにドラッグアンドドロップします。

Windows同様、最初の起動時には新しいライセンス条項が表示されますので、「Accept」をクリックすることで利用可能です。これでセットアップが完了しましたので、環境構築を行います。

Docker環境構築の流れ

img_dockerbuild_02

Dockerのモジュールセットアップが完了したら、Docker実行のために必要な環境構築を進めていきます。Dockerの利用は以下の流れで行います。DockerfileからDockerイメージが作成できたら実行可能な状態になります。

Dockerfileの作成 必要な構成ファイルをDockerfileとして作成します。 テキスト形式の構成ファイルなため、テキストエディタまたは統合開発環境(IDE)を使って作成します。

Dockerイメージの作成 Dockerfileからコンテナ動作させるDockerイメージを生成します。Dockerイメージはアプリケーション実行に必要な変数・コマンド・メタデータを含んだテンプレートファイルです。”docker build”でDockerfileからDockerイメージを作成します。

コンテナの実行 Dockerイメージは静的なテンプレートファイルなため、”docker run”で起動します。Dockerイメージは起動することでコンテナで実行されます。実行されているコンテナはメモリー上の実行インスタンスと言われます。

Docker CLIは、コマンドラインインターフェイスでコンテナの「生成と削除」「起動・停止」「プロセスの実行・一時停止と解除」「操作・保全」「稼働状況とログ出力」等のコマンドが提供されています。また、イメージの利用やリポジトリの活用もCLIで実施します。WindowsやMacでは、Docker DesktopでGUIベースで作業を行うこともできます。

上記の流れで運用上問題がない場合は、標準テンプレートとしてイメージを配布活用します。Docker Hubのような公開リポジトリを用いて、イメージを共有することも可能です。

Dockerイメージとコンテナの違いとは?作成の流れ入門

Dockerfileの書き方

Dockerfileは、Dockerにイメージビルドの指定を行うファイルです。テキストファイルなため、エディタまたは標準入力からリダイレクトしファイルを生成します。”docker build”コマンドでイメージをビルドします。

”docker build”では、DockerfileとPATHやURLのコンテキストを用いてイメージをビルドします。実際のビルド処理はDockerデーモンが実行しています。Dockerfileの記述は命令(instruction)と引数(arguments)のセットで記述します。”#”で始まる行はコメント行です。

命令(instruction)は以下が指定可能です。 ・FROM  イメージビルドの処理ステージを初期化し、ベースとなるイメージを設定します。  通常にARGを除き、最初に記述します 例:FROM base:latest

・ARG  変数を宣言します。 例:ARG VERSION=latest   FROM base:${VERSION}

・RUN  コマンドを実行し、イメージビルドを確定します。  シェル実行形式、またはexec形式で記載します。 例:RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME' または   RUN ["/bin/bash", "-c", "echo hello"]

・CMD  デフォルト処理を設定するために1つだけ記述します。  イメージが起動されたときに実行する命令です。  シェル実行形式・ENTRYPOINTのデフォルトパラメータまたはexec形式で記載します。

・ENTRYPOINT  コンテナを実行モジュールのように実行する際に設定します。  シェル実行形式またはexec形式で記載します。  ”docker run --entrypoint”でENTRYPOINTを置き換えることもできます。  DockerfileにはCMD、またはENTRYPOINTのいずれかが必要です。

・LABEL  イメージにメタデータを追加する命令です。  =とキーバリューで記述します。 例:LABEL version=”1.1”

・EXPOSE  コンテナ実行時のネットワークのリッスンポートを指定できます。 例:EXPOSE 80/tcp

・ENV  環境変数に値を設定します。  変数が1つの場合は”ENV ”とするか、”ENV =”で指定します。  変数が複数の場合は、キーバリューで記述することで1行で複数の指定が可能です。

・ADD  指定するファイルやディレクトリ・リモートファイルURLを指定パスに追加します。 例:ADD files /somedir/

・COPY  指定するファイルやディレクトリをコピーし、指定パスに追加します。 例:COPY files /somedir/

・VOLUME  指定した名称でマウントポイントを生成します。

・USER  ユーザ名と、必要に応じてユーザグループを指定します。

・WORKDIR  ワークディレクトリを指定します。

・ARG  ビルド時の変数のデフォルト値を指定します。 この他にも、トリガー命令やシグナル処理の指定等を行うことができます。 【参考】:Best practices for writing Dockerfiles 【参考】:Dockerfile reference

Dockerfileの具体例

Dockerfileは1から作成することができますが、「Docker Official Images」を利用することをおすすめします。理由としては、これまでのDockerの運用経験からより安定した構成情報が公開されており、そのベストプラクティスを活かしたDockerイメージが構成可能となるためです。Docker Official Imageは以下のリンクに格納されています。 【参考】:Docker Official Images

この「Repositories」からリポジトリを検索し、利用します。Docker公式サイトでは、Bitbucket・circleci・elastic・GitLab・Jenkins・JFrog・kubernetes・mongo DB・NGiNX・GitHub・redis・Visual Studio Code・VMware Tanzu等がDockerパートナーとして紹介されており、活発に情報公開されています。

Python・PHP・Ruby on Rails等の主要開発言語やフレームワーク、httpd・postgres・ubuntuも良く利用されていますので、効率的にイメージ構築が可能です。

WordpressのようにPHPとApacheを組み合わせて運用するケースでは、リポジトリをそのまま利用するだけではなく、Dockerfileの記述を理解する情報源としても有効です。参考までに、2021年12月15日のWordpress latest版では、PHP8.1とApacheの組み合わせがDockerfileに記述されています。ご興味あれば参考にしてください。 【参考】:GitHub docker-library wordpress / latest / php8.1 / apache / Dockerfile

Docker Composeを用いた環境構築

Docker Composeは、YAML形式のファイルを用いて複数のコンテナを定義・実行することができます。アプリケーションサービスの生成や起動が効率的に行うことができます。本番稼働のワークフローを効率化することが可能です。大規模で複雑な運用を行う場合に、効率的なワークフローを実現します

Docker Composeの作業ステップとしては以下の手順に従います。 ・Dockerfileの定義  アプリケーション環境を定義することで再構築可能となります。

・docker-compose.ymlの定義  ファイルにアプリケーション構成サービスを定義します。

・docker-composeの実行  ”docker-compose up” でアプリケーションの起動・実行をします。

【参考】:Overview of Docker Compose

Dockerfileを作成し環境構築を効率的に実施しましょう

img_dockerbuild_03

Dockerのセットアップが完了したら、Dockerfileがあれば環境構築が可能です。公開リポジトリでは、多くのソフトウェアライブラリが「Docker Official Images」に公開されています。

ベストプラクティスの利用は環境構築と運用効率化に欠かせないものであり、さらに知識吸収にはうってつけの蓄積情報です。公開リポジトリの登録情報やファイルを参照し理解を深めていきましょう。

エンジニア必見! Docker Desktop有料化の影響と対策
Docker Desktop 4.2の新機能とインストール方法
気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT