
Dockerのセットアップ
はじめに
Dockerは、アプリケーションの開発、テスト、およびデプロイを効率化するためのコンテナ化プラットフォームです。コンテナは、アプリケーションとその依存関係を隔離し、異なる環境でも一貫した実行を保証します。この記事では、Dockerの主要コンポーネントであるコンテナ (Container)、イメージ (Image)、**ボリューム (Volume)**について解説し、Windows、macOS、Linuxそれぞれのセットアップ方法を体系的に説明します。
コンテナ
Dockerコンテナは、軽量で独立した実行環境を提供します。コンテナは、ホストマシンのカーネルを共有し、仮想マシンよりも効率的にリソースを使用します。
- コンテナは、実行中のアプリケーションやプロセスを隔離するために使用される。
- コンテナは、指定したイメージを基にして起動される。
- コンテナは、リソースの利用を制限するための機能(CPU、メモリ、I/Oなど)を提供する。
コンテナの基本操作
Dockerの基本操作は、次のコマンドで行います。
docker run -d --name my_container my_imagedocker run: 新しいコンテナを起動する。-d: バックグラウンドでコンテナを実行するオプション。--name: コンテナの名前を指定する。my_image: 使用するDockerイメージ。
イメージ
Dockerイメージは、コンテナの実行環境を定義する不変のテンプレートです。各イメージは、アプリケーション、ライブラリ、設定ファイルなどを含んでおり、コンテナを生成するために使用されます。
- イメージは、ベースイメージ(たとえばUbuntu)の上にアプリケーションを積み重ねる形で作成される。
- イメージは、軽量であり、多くのイメージを一つのホスト上で同時に扱うことが可能である。
- イメージは、Docker Hubやプライベートリポジトリから取得できる。
イメージの操作
イメージの操作には、次のようなコマンドを使います。
docker pull ubuntu
docker build -t my_custom_image .docker pull: リポジトリからイメージをダウンロードする。docker build: Dockerfileを基に新しいイメージを作成する。-t: 新しいイメージにタグを付ける。
ボリューム
Dockerボリュームは、コンテナ間でデータを共有したり、永続化するために使用されます。ボリュームを使うことで、ホストマシン上に保存されたデータをコンテナが利用できるようにします。
- ボリュームは、ホストシステムのファイルシステム上に保存され、コンテナが停止してもデータが保持される。
- ボリュームは、複数のコンテナ間でデータを共有できる。
- ボリュームは、コンテナのライフサイクルとは独立して管理される。
ボリュームの操作
ボリュームを作成および使用するための基本コマンドは以下の通りです。
docker volume create my_volume
docker run -d -v my_volume:/data my_imagedocker volume create: 新しいボリュームを作成する。-v: コンテナとホスト間でボリュームをマウントする。
Windowsでのセットアップ
WindowsでDockerをセットアップするには、Docker Desktop (Windows) をインストールします。
- Docker公式サイトからDocker Desktopをダウンロードします。
- インストーラーを起動し、指示に従ってインストールを完了します。
- インストール後、Docker Desktopを起動し、設定からWSL 2 Backendを有効にします。
macOSでのセットアップ
macOSでも、Docker Desktop (macOS) を利用して簡単にDockerをセットアップできます。
- Docker公式サイトからDocker Desktopをダウンロードします。
- ダウンロードした.dmgファイルを開き、指示に従ってインストールします。
- インストールが完了したら、Docker Desktopを起動します。
Linuxでのセットアップ
Linuxでは、Docker Engineを直接インストールします。以下の手順は、Ubuntuを例にしています。
-
パッケージ情報を更新します。
sudo apt-get update -
依存パッケージをインストールします。
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -
Dockerの公式GPGキーを追加します。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -
Dockerのリポジトリを追加し、Dockerをインストールします。
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce -
Dockerサービスを起動します。
sudo systemctl start docker
Docker Desktop
Docker Desktop のインストールに含まれるのは、 Docker Engine 、 Docker CLI クライアント、 Docker Compose 、 Notary 、 Kubernetes 、Credential Helper です。
Docker Engine
Docker Engineは、Dockerコンテナをビルド、実行、管理するための中核となるコンポーネントです。コンテナの作成、起動、停止、削除などの操作を可能にし、仮想化技術を使用してアプリケーションを独立した環境にパッケージ化します。
Docker CLI クライアント
Docker CLIクライアントは、コマンドラインを通じてDocker Engineと対話するためのツールです。コンテナのビルド、イメージの管理、ネットワークの設定など、様々な操作を行うことができます。シンプルで強力なコマンドセットを提供し、開発者が簡単にDockerを操作できるようになっています。
Docker Compose
Docker Composeは、複数のコンテナを組み合わせてアプリケーションを構築および管理するためのツールです。YAMLファイルを使用して複数のサービス、ネットワーク、ボリュームなどを定義し、一括で起動や停止を行うことができます。複雑なアプリケーション環境の構築を簡素化し、環境の再現性を向上させます。
Notary
Notaryは、Dockerイメージの署名と検証を行うセキュリティツールです。コンテナイメージの信頼性を向上させ、改ざんされていないことを確認するために使用されます。Dockerイメージに署名を追加することで、信頼性の高いデプロイメントが可能となります。
Kubernetes
Kubernetesは、Dockerコンテナを自動的にデプロイ、スケーリング、管理するためのオーケストレーションツールです。コンテナクラスタを効果的に管理し、アプリケーションの高可用性やスケーラビリティを確保します。Dockerと組み合わせて使用され、大規模な分散システムの構築を容易にします。
Credential Helper
Credential Helperは、Dockerクライアントがリモートレジストリに対して認証情報を管理するための仕組みです。ユーザーが認証情報を手動で入力することなく、Dockerが自動的に認証を行えるようになります。セキュアなイメージのプルやプッシュを容易にし、運用の簡略化を図ります。
Docker Extension Essentials
Ref.:
Usage
git clone https://github.com/<repo-name>/<name-of-your-extension>
make build-extension
docker extension install <repo-name>/<name-of-your-extension>
docker extension ls
docker pull <Docker-Hub-username>/<image-name>
docker extension install <Docker-Hub-username>/<image-name>Ref.:
Docker on WSL2
GPU Support
docker run --rm -it --gpus=all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark
Run "nbody -benchmark [-numbodies=<numBodies>]" to measure performance.
動作確認
sudo docker run --rm hello-world停止・削除
完全に削除するには、コンテナ・イメージを削除する必要があります。
docker ps -q
docker ps -q | xargs docker stop
docker ps -q | xargs docker rm # コンテナの削除
docker images -q | xargs docker rmi # イメージの一括削除
docker rmi <tag>:<id> # If it is tagged in multiple repositories, needs to select tagTrouble shoot
- Docker Desktop.exe が起動しない
- システムを再起動する
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.- Check
Docker Desktop> Settings > Resources > WSL integration - Docker desktopからの参照先WSLを変更
デフォルトでは、Docker DesktopはWSL 2エンジンのデータを
C:\Users\[USERNAME]\AppData\Local\Docker\wsl。 たとえば、場所を別のドライブに変更する場合は、次の方法で変更できますSettings -> Resources -> AdvancedDockerダッシュボードのページ。 これと他のWindows設定の詳細を読む Windowsのドッカーデスクトップ設定の変更
- e.g.
F:\wsl\ubuntu\DockerDesktopWSL
Moving a disk image may take several minutes to complete depending on its size and the type of the source and destination drives.
- docker wsl change integrated distro
- `wsl --unregister docker-desktop`
- `wsl --shutdown`
- version の不一致などを確認
cat /etc/os-release
docker -v