Pythonによるデータ分析・機械学習ブログ

Pythonによるデータの前処理・グラフ化、機械学習、統計解析、画像処理、Webスクレイピング、自然言語処理の基礎について紹介していきます。

MENU

Dockerfileで利用できる命令、書き方、Dockerfileからコンテナ生成方法

はじめに

仮想化技術

 近年、IT業界では「仮想化」という言葉が頻繁に聞かれるようになり、ネットワークやサーバーの仮想化が進んでいます。仮想化技術の誕生によって、1台のサーバー上に複数のサーバー環境を構築することが可能になりました。サーバー環境を分けて構築することで、異なるOS上で構築したり、パッケージのバージョンに合わせてソフトの環境構築が可能となります。

Dockerとは

 このようなサーバーの仮想環境の構築で注目を浴びているのが、コンテナ型仮想化環境技術であるDockerです。Dockerを用いることでホストOS上にコンテナと呼ばれる仮想環境を用意することができ、そのコンテナ内でアプリケーション等を動作させることができます。Dockerの主なメリットは3つあります。

  1. 高速に動作する点です。Dockerコンテナはカーネル部分をホストOSと共有するため、リソース使用量も非常に少なく、高速に動作します。
  2. 動作環境構築の工数削減ができる点です。Dockerhubと呼ばれるリポジトリUbuntuDebian等のコンテナイメージが用意されており、そちらを取得してコンテナを作成することができ、比較的速く環境を用意できます。さらにDockerfileを用いるとapt install等のコマンドを手動で実行することなく、動作環境を自動的に構築してくれます。Dockerfileはコンテナイメージを管理するためのファイルで、動作環境を構築時に実行するコマンドを記述しておくことで、ビルド時に動作環境構築を自動的に実施してくれます。このDokcerfileを用いることで単純化・標準化することができます。
  3. 異なるマシン上への移行が可能な点です。一度作成したコンテナイメージを別のマシンに移して、コンテナイメージからコンテナを作成することができます。この利点により複数人で共同で開発する場合、開発から運用に移行する際などに非常に便利となります。

本記事では、Dockerfileで利用できる命令、書き方、Dockerfileからコンテナ生成方法を紹介します。

 

 

 

1. Dockerfileで利用できる命令と書き方

Dockerfileで利用できる主な命令は下表の内容になります。

項目 指定内容
FROM ベースとなるコンテナイメージを指定
RUN ベースイメージで実行するコマンドを指定
LABEL ラベル情報を指定
ENV 環境変数を指定
ADD ローカルホストからイメージへ追加したいファイル、ディレクトリを指定。
COPY ローカルホストからイメージへコピーしたいファイル、ディレクトリを指定
CMD コンテナ実行時のデフォルトの実行コマンドを指定
ENRYPOINT コンテナ実行時のデフォルトの実行コマンドを指定
EXPOSE 開放するポートを指定
VOLUME マウントポイントを作成
USER RUN、CMD、ENTRYPOINTを実行するユーザーを指定
WROKDIR RUN、CMD、ENTRYPOINT、COPY、ADDのコマンド実行時の作業ディレクトリを指定

 

Dockerfileの書き方の例は以下のようになります。これは物体検出を行うyolov7-onnx-inferの動作環境をUbuntu:20.04をイメージベースに作成するためのDockerfileです。

 

2. Dockerfileからコンテナイメージの生成

Dockerfileからコンテナイメージを生成するには「docker build -t <コンテナイメージ名>:<タグ名> <Dockerfileのあるディレクトリパス>」コマンドを実行します。以下は上記のDockerfileからコンテナイメージを生成する際のコマンド例です。

実行すると下図のようにコンテナイメージが生成されます。

さらにコンテナイメージからコンテナを生成するには、以下のコマンドのようにします。-vのオプションを指定することで、ローカルのディレクトリをコンテナ内のディレクトリにマウントすることができます。

実行すると以下のようにコンテナ内で実行できるようになります。

 

オススメ書籍

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Docker実践ガイド第2版 コンテナ環境の構築・運用・活用

たった1日で基本が身に付く! Docker/Kubernetes超入門

 

スキル修得&転職

 近年、DXの進展に伴うデジタル人材の需要の高まりに追いついていない状況が続いていると経済産業省がホームページで記載している通り、DX人材、IT人材が不足しているのが現状です。さらにコンピュータの性能向上やAI技術の発展により、よりDX人材、IT人材の需要が高まってきます。さらには、今後の長期間安定して職がある業種とも考えられます。

以下の求人では、IT業界の転職や、IT未経験だけどIT人材を志望する就活を支援してくれます。無料で会員登録もできるので、まずは登録だけでもして様子を見てみてはいかがでしょうか?

▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼

▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

おわりに

本記事では、Dockerfileで利用できる命令、書き方、Dockerfileからコンテナ生成方法を紹介しました。Dockfileを使用することでコンテナ生成が単純化・標準化できるので非常に便利ですね。