Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

Dockerコンテナの使い方メモ(初心者向け)

投稿日:2023年8月6日 更新日:

 

<目次>

Dockerコンテナの使い方メモ(初心者向け)
 やりたいこと
 背景(Why Container?)
 STEP0:前提条件
 STEP1:Dockerのインストール&初期設定
 STEP2:Dockerfileを作成
 STEP3:Dockerイメージのビルド
 STEP4:コンテナの起動

Dockerコンテナの使い方メモ(初心者向け)

やりたいこと

・Dockerコンテナとは?を理解する
・Dockerコンテナを試しに動かしてみる

背景(Why Container?)

(表)
  一貫性 可搬性 効率性 柔軟性
課題:環境毎に依存関係が一致せず、アプリ動作に影響
→コンテナ化により、アプリケーションとその依存関係が一体化され、異なる環境でも一貫してデプロイ/動作できる
   
課題:環境毎に構成/リソース不一致で再現/切り分け困難
→開発環境、テスト環境、本番環境で同じコンテナイメージを使用することで一貫性が確保
   
課題:仮想マシン毎にOSを要し、リソース浪費/複雑な運用
→軽量で効率的な仮想化技術を提供し、ホストマシンのリソースを効率的に活用
   
課題:スケーラビリティとマイクロサービスアーキテクチャ
→コンテナは水平方向にスケールアウトしやすく、負荷分散が容易
→コンテナはマイクロサービスアーキテクチャと相性が良く、個々のコンテナは独立してデプロイ・管理されるため、柔軟なアプリケーション展開が可能
   
(参考)コンテナとVMの違いは?
以降は実際にDockerコンテナを作成して動かす手順を紹介します。

STEP0:前提条件

・Windows OSで試します。

STEP1:Dockerのインストール&初期設定

STEP1-1:インストール

・①Dockerのサイト(https://www.docker.com/)にアクセス
・②「Download Docker Desktop」押下
(図111)

・③ダウンロードしたexeを実行
・④Configurationはデフォルト設定で「OK」押下
(図112)


(表)
WSLとは? ・「Windows Subsystem for Linux」の略。
・Windows上でLinux環境を実行するための機能
→例えば、Windows上でLinuxコマンドやツールを実行できる
→例えば、Windows上でLinux用の開発環境をセットアップできる
(従来は仮想マシンを立てて、Linux仮想マシンを作成していた)

・WSL 1は、WindowsとLinuxの間に翻訳層を介してシステムコールを実行し、LinuxバイナリをWindowsカーネルで実行する仕組み(→LinuxはWSL 1を介してWindowsのAPIを使用)
・WSL 2は、Hyper-V技術を使用して、軽量VMの中で仮想化されたLinuxカーネルが動作(→速度が向上)

Hyper-V ・ハードウェア仮想化プラットフォーム
・Windows上で仮想マシン(VM)を作成して実行できます。
・複数のオペレーティングシステムを同時に実行できる
・仮想ネットワーク環境を構築したりすることができます。
  (表)メリデメ
観点 ①WSL 2 ②Hyper-V 説明
高速&軽量 特になし
シームレス WindowsとLinuxの統合が容易になり、WindowsファイルシステムへのアクセスやWindowsネットワーキングのサポートも提供されます。
高度な仮想化 より高度な仮想化機能や複数のオペレーティングシステムの同時実行が可能です。

(図113)
・④「Close and Restart」
(図114)

・⑤「Docker Subscription Service Agreement」に同意する場合「Accept」を押下
(図115)

(要約)Docker Subscription Service Agreement
・利用規約はサービスの条件と支払い方法を提供しています。
→「従業員数が250人未満かつ年間売上高が1,000万ドル未満」の場合は「無料」
・利用者は正確な情報を提供し、アカウントを安全に保持する責任があります。
・Dockerは適切な使用か監視し、違法行為や権利侵害を禁止します。
・サービスの中止や変更、利用規約違反に基づくアカウントの中止や解約が可能です。
・Dockerはサービスに関連する損害や責任について責任を負いません。
・利用者は知的財産権を尊重する義務があります。

STEP1-2:WSL 2のインストール

・①注意メッセージ中のリンクをクリック
(注意メッセージ)
Docker Desktop requires a newer WSL kernel version.
Update the WSL kernel by running “wsl –update” or follow instructions at https://docs.microsoft.com/windows/wsl/wsl2-kernel
 
(図121)
・②WSL2 Linux カーネル更新プログラム パッケージのダウンロード
(図122)
・③インストール
(図123)
(図124)

・④再度Docker Desktopを開いて初期設定。
(図131)
(図132)

STEP2:Dockerfileを作成

・①テキストエディタを開いて、新しいファイルを作成し、次のコードを入力します。
 
(サンプル)
# NginxベースのDockerイメージを使用
FROM nginx:latest
# コンテナ内のNginxのデフォルトコンテンツディレクトリに index.html ファイルをコピー
COPY index.html /usr/share/nginx/html
# ホストの8080ポートとコンテナの80ポートをマッピング
EXPOSE 80
 
(図211)
 
・②このファイルをDockerfileという名前で保存します。
(図212)

・③「Hello World !」を表示するために「index.html」を同階層に作成。
(図212②)

STEP3:Dockerイメージのビルド

・①ターミナルまたはコマンドプロンプトを開き、cdコマンドでDockerfileが保存されているディレクトリに移動します。
(図213)
・②次のコマンドを実行して、Dockerイメージをビルドします。
「Dockerイメージをビルド」というのは、Dockerコンテナの実行に必要な環境、ファイル、設定などを含むパッケージを作成するプロセスです(Dockerfileを読み込み、指定された手順に従ってイメージを構築)

> docker build -t hello-world .
(図214①)
・③Dockerイメージがビルドされた
(図214②)
(図215)

(表)DockerイメージとDockerコンテナ

Dockerイメージ ・Dockerイメージは、アプリケーションやサービスを実行するために必要なすべてのコード、ランタイム、システムツール、システムライブラリ、設定ファイルなどを含んだパッケージです。
・Dockerコンテナの作成に使用されるテンプレートの役割。
Dockerコンテナ ・Dockerコンテナは、Dockerイメージを元に作成された実行可能なインスタンスです。
・コンテナはイメージの実行状態であり、プロセスが実行される環境です。

(補足)コマンドの最後の「.」について

Dockerイメージをビルドするためのファイルとディレクトリのセットを指定します。最後の「.」は「現在のディレクトリ」にビルドする事を意味します。
 

STEP4:コンテナの起動

・①次のコマンドを実行してコンテナを起動します。
(※Dockerイメージを使用してDockerコンテナを作成および実行)
> docker run -p 8080:80 hello-world
(図311)
・②ステータスが「In Use」に変化する
(図312)

(図313)
・③ブラウザで「http://localhost:8080」にアクセスします。
(図314)
 

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

非機能要件とは?を極力分かりやすくご紹介

  <目次> (1) 非機能要件とは?を極力分かりやすくご紹介  (1-1) 機能要件とは?(Functional Requirement)  (1-2) 非機能要件とは?(Non-Func …

OutlookでSkypeボタンが押せない時の復旧方法について

  <目次> (1) OutlookでSkypeボタンが押せない時の復旧方法について  (1-1) 事象概要  (1-2) 原因 (1) OutlookでSkypeボタンが押せない時の復旧方 …

no image

プロセスマイニングの進め方や流れについてご紹介

  <目次> (1) プロセスマイニングの進め方や流れについてご紹介  (1-1) プロセスマイニングの流れ(Celonisの例)  (1-2) 参考 (1) プロセスマイニングの進め方や流 …

no image

ソフトマックス関数の微分の導出をご紹介

  <目次> (1) ソフトマックス関数の微分の導出をご紹介  (1-1) ソフトマックス関数とは?  (1-2) ソフトマックス関数の微分(一般式)  (1-3) ソフトマックス関数の微分 …

Swaggerとは?APIのドキュメント生成方法(SwaggerのHello World)をご紹介

  <目次> (1) Swaggerとは?APIのドキュメント生成方法(SwaggerのHello World)をご紹介  やりたいこと  概要  (1-1) STEP1:Node.js ( …

  • English (United States)
  • 日本語
Top