Docker 入門,Docker のインストール,Docker の基本操作
【概要】 Dockerは実行環境をパッケージとして扱うコンテナ化技術である.イメージを基にコンテナを作成し,各コンテナは独立して動作する.データの永続化にはボリュームを使用し,コンテナ間の通信はネットワークを使用する.Dockerfileに手順を記述してイメージをビルドでき,レイヤー構造により管理が可能である.
【目次】
- コンテナ化
- Dockerエンジン
- Dockerイメージ
- イメージのレイヤー構造
- Dockerfile
- Dockerコンテナ
- Dockerボリューム
- Dockerネットワーク
- Docker Desktopのインストール,Docker エンジンの起動(Windows上)
- Docker Desktopのインストール,Docker エンジンの起動(Ubuntu上)
- Docker の基本操作
【サイト内の関連ページ】
1. コンテナ化
コンテナ化(Containerization)は,アプリケーションとその実行環境(ライブラリ,設定ファイル,実行環境など)を単一のパッケージとして統合し,異なる実行環境でも一貫した動作を保証する技術である.Dockerによるコンテナ化では,以下の利点がある:
- 実行環境の一貫性:異なる環境間での動作の差異を解消し,安定した実行環境を実現する
- アプリケーションの分離:各コンテナで異なるバージョンのライブラリやフレームワークを独立して使用でき,バージョン依存の課題を解決する
- 環境間の移植性:OS,クラウド環境など,多様な実行環境において同一の動作を実現する
- システムリソースの効率性:仮想マシン(Virtual Machine:VM)と比較して,メモリ使用量とディスク使用量を削減する
2. Dockerエンジン
Dockerエンジン(Docker Engine)は,Dockerコンテナの作成と実行を管理するソフトウェア基盤である.Dockerエンジンは,以下の2つの主要な要素で構成される:
- Dockerデーモン(dockerd):コンテナのライフサイクル全体を管理するサーバープロセス
- Dockerクライアント(docker CLI):ユーザーのコマンドをDockerデーモンに伝達するコマンドラインインターフェース
3. Dockerイメージ
Dockerイメージとは,アプリケーションの実行環境を完全に定義したパッケージであり,実行に必要な全てのコンポーネント(ファイル,ライブラリ,依存関係)を含む.このイメージは,実行環境であるDockerコンテナを生成するためのテンプレートとして機能する.
Dockerイメージのプル(取得)
「docker pull
」コマンドは,Docker HubなどのDockerレジストリから,指定したイメージを効率的にダウンロードする.
次は,Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを取得する例である.
「docker images
」コマンドにより,ローカル(手もとのパソコン)に保存されているDockerイメージの一覧を表示している.
docker pull ubuntu:24.04
docker images
Dockerイメージのビルド(Dockerfileからのイメージ作成)
「docker build
」コマンドは,カレントディレクトリのDockerfileを基にイメージを生成する.生成したイメージには,識別用の名前(例:myubuntu2404)とバージョン管理用のタグ(例:1.0)を設定できる.
docker build -t myubuntu2404:1.0 .
docker images
Dockerイメージの一覧表示
docker images
コマンドにより,ローカル(手もとのパソコン)に保存されているDockerイメージの一覧を表示する.表示される情報には,各イメージのリポジトリ名,タグ,イメージID,作成日時,サイズが含まれる.イメージの詳細な構成情報を確認するには,docker image inspect
コマンドにイメージIDを指定して実行する.
docker images
4. イメージのレイヤー構造
Dockerイメージは,複数のレイヤー(層)によって階層的に構成される.各レイヤーは,Dockerfileの個々のコマンド(FROM,RUN,COPYなど)の実行結果として生成される.
以下に,レイヤーが段階的に生成される具体例を示す:
FROM ubuntu:24.04 # ベースイメージのレイヤー
COPY ./app /app # アプリケーションファイルのレイヤー
# システムパッケージのインストールのレイヤー
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential
# Miniconda3のインストールのレイヤー
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \
rm Miniconda3-latest-Linux-x86_64.sh
# condaの初期設定とdev環境の作成のレイヤー
RUN /opt/conda/bin/conda init bash && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc
# コンテナ起動時のコマンド
CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \
/opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
レイヤーには,以下の特徴がある:
- ビルド時にキャッシュされ,後続のビルドプロセスで再利用が可能である
- 各レイヤーは,前のレイヤーからの差分情報のみを保存する
5. Dockerfileとは
Dockerfileは,Dockerイメージを作成するための手順を定義したテキストファイルである.ベースイメージの選択,実行コマンドの設定,ファイルのコピー指示,その他の構築手順を記述する.
以下に,2つの構成例を示す.
- 基本的な開発ツールをインストールする構成の例
次のDockerfileは,Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを取得し,Python環境を構築している.Miniconda3を用いてPython 3.12環境を作成し,NumPy,Pandas等の科学技術計算ライブラリを導入している.Jupyter NotebookをPort 8888で起動するよう設定し,開発環境としてcmake,git等の基本ツールも導入している
FROM ubuntu:24.04
# 環境変数の設定
ENV PATH=/opt/conda/bin:$PATH \
SHELL=/bin/bash \
DEBIAN_FRONTEND=noninteractive \
ENV TZ=Asia/Tokyo
# システムパッケージのインストール
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential
# Miniconda3のインストール
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \
rm Miniconda3-latest-Linux-x86_64.sh
# condaの初期設定とdev環境の作成
RUN /opt/conda/bin/conda init bash && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc
RUN /opt/conda/bin/conda create -n dev python=3.12 -y && \
/opt/conda/bin/conda install -n dev -y numpy pandas matplotlib scikit-learn jupyter pylint pytest black && \
echo "conda activate dev" >> /root/.bashrc
# Jupyterの設定
RUN mkdir -p /root/.jupyter && \
/opt/conda/envs/dev/bin/jupyter notebook --generate-config && \
echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
# 作業ディレクトリの設定
WORKDIR /workspace
# Jupyterのポートを公開
EXPOSE 8888
# コンテナ起動時のコマンド
CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \
/opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
6. Dockerコンテナ
Dockerコンテナは,Dockerイメージから生成される独立した実行環境である.各コンテナは,他のコンテナやホストシステムから完全に分離され,独自のプロセス空間,ネットワーク環境,ファイルシステムを持つ仮想化環境である.
コンテナの作成と実行
次のコマンドは,公式レポジトリで提供されているUbuntu 24.04 LTSイメージを基に新しいコンテナを作成し,「cat /etc/os-release」コマンドを実行した後,自動的にコンテナを削除する(--rm
オプション)操作である.
docker run --rm ubuntu:24.04 cat /etc/os-release
次のコマンドは,公式レポジトリで配布されているUbuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを基に,新しいコンテナをバックグラウンドで実行する.
-it
オプションにより対話的な操作を可能にし,--name
オプションでコンテナに一意の識別名を付与する.
exit
コマンドで接続を終了する.そのとき,コンテナは停止する.
--rm
オプションが指定されていないため,コンテナは停止後も保持される.
docker run --name ubuntu -it ubuntu:24.04 /bin/bash
exit
停止中のコンテナへの接続.「exit」で切断.
docker start
コマンドにより,停止中のコンテナを実行する.
docker exec
コマンドにより,実行中のコンテナに新しいプロセスとして接続し,exit
コマンドで接続を終了する.そのとき,コンテナは停止せずに実行を継続する.
docker start ubuntu && docker exec -it ubuntu /bin/bash
exit
実行中あるいは停止中のコンテナの一覧表示
docker ps
コマンドにより,すべてのコンテナの状態を確認できる.-a
オプションにより,停止中のコンテナも含めて表示する.
docker ps -a
7. Dockerボリューム
Dockerボリュームは,コンテナのライフサイクル(作成から削除まで)から独立してデータを永続的に保持する機能である.コンテナが削除された後もボリューム内のデータは安全に保持され,再利用が可能である.さらに,複数のコンテナ間でボリュームを共有することで,異なるコンテナ間でのデータアクセスを実現する.
ボリュームの操作
# データ永続化用のボリュームを作成
docker volume create app-data
# 作成したボリュームをマウントしてコンテナを起動
docker run --rm -v app-data:/data ubuntu:24.04 ls -al /data
8. Dockerネットワーク
Dockerネットワークは,コンテナ間の通信を管理する機能である.複数のコンテナ間の通信や,コンテナとホストシステム間の通信を実現する.
ネットワークの種類
- bridgeネットワーク:標準のネットワークドライバとして,同一ホスト上のコンテナ間通信を実現する
- hostネットワーク:ホストシステムのネットワークスタックを直接活用し,通信を実現する
- noneネットワーク:ネットワーク機能を無効化する
- overlayネットワーク:複数のDockerホスト間でのコンテナ通信を実現する
9. Docker Desktopのインストール,Docker エンジンの起動(Windows上)
Docker Desktopにより,画面を用いてビジュアルに,Dockerコンテナ, Dockerイメージ,Dockerボリュームの一覧表示,状態確認,基本的な操作を行うことができる.
Docker Desktopの起動は,Windowsのスタートメニューから起動できる.Docker デスクトップを起動することにより,Docker エンジンが起動する
4.1 インストール
Dockerエンジンを構成するDockerデーモンとクライアントを含むDocker Desktopのインストール手順を示す.
インストールは,以下の2つの方法から選択可能である.
A)winget(Windowsパッケージマネージャー)を使用したインストール
- Windowsで,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- winget(Windowsパッケージマネージャー)が利用可能か確認する:
winget --version
- Docker Desktopのインストール:
winget install --scope machine Docker.DockerDesktop
B)手動でのインストール
- Docker Desktopのダウンロード:
- 公式サイト(https://docs.docker.com/desktop/features/wsl/#download)にアクセス
- インストーラをダウンロードする
- インストールの実行:
- ダウンロードしたインストーラを実行する
- 画面の指示に従ってインストールを完了する
- 自動起動するように設定したい場合
コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
次のコマンドを実行
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v "Docker Desktop" /t REG_SZ /d "\"C:\Program Files\Docker\Docker\Docker Desktop.exe\"" /f
10. Docker Desktopのインストール,Docker エンジンの起動(Ubuntu上)
1. 事前準備:既存の Docker の削除(必要な場合)
Docker Desktop との競合を防ぐため,既存の docker-ce
や docker.io
がインストールされている場合は,以下のコマンドで削除する必要がある.
sudo apt remove -y docker docker-engine docker.io containerd runc docker-ce docker-ce-cli
rm -r $HOME/.docker
sudo rm -f /usr/local/bin/com.docker.cli
sudo apt purge -y docker-desktop
2. apt が HTTPS でレポジトリを利用できるようにする設定
sudo apt -y update
sudo apt install -y ca-certificates curl gnupg lsb-release
3. Docker Desktop リポジトリの追加
Docker の公式 GPG(GNU Privacy Guard)キーを追加し,セキュアな Docker 公式リポジトリを登録する.
参考ページ: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Docker Engine のインストール
sudo apt -y update
sudo apt -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
5. Docker Engine がインストールできたことの確認
以下のコマンドを実行し,エラーメッセージが表示されないことを確認する.
sudo docker run hello-world

6. 権限の設定,動作確認
以下のコマンドを実行し,エラーメッセージが表示されないことを確認する.
sudo usermod -aG docker $USER
docker run hello-world
docker --version
docker version
docker compose version

7. Docker Desktop のインストール
参考ページ: https://docs.docker.com/desktop/setup/install/linux/ubuntu/
curl -LO https://desktop.docker.com/linux/main/amd64/docker-desktop-amd64.deb
sudo apt install -y ./docker-desktop-amd64.deb
8. Docker Desktop を起動し動作確認
以下のコマンドで Docker Desktop を起動し,正常に動作することを確認する.
Docker Desktop の画面が開くため,インターフェースを確認する.
docker desktop version
docker desktop start

9. Docker Engine のシステム起動時の自動起動設定
sudo systemctl unmask docker.service
sudo systemctl enable docker
sudo systemctl is-enabled docker
10. トラブルシューティング
docker.service not found
エラー
Docker のインストール状態を正確に確認するため,docker version
コマンドを実行する.
permission denied
エラー
sudo usermod -aG docker $USER
を実行後,システムからログアウトし,再ログインしてからインストールを実行する.
11. Docker の基本操作
イメージ,コンテナに対するコマンド一覧
イメージ
- Dockerfile からイメージの構築 build <Dockerfile についての指定>
- コミット(コンテナからイメージの作成) commit <コンテナ> <レポジトリ:タグ>
- 一覧表示 images
- 情報取得 inspect <イメージ>
- 読み込み load
- 保存 save <イメージ>
- イメージの削除 rmi
コンテナ
- 実行開始 run <イメージ>[<コマンド>]
- 停止中のコンテナを実行状態に start <コンテナ>
- 実行中のコンテナを停止 stop <コンテナ>
- 実行中のコンテナでコマンドの起動 exec <コンテナ>
- 実行中のコンテナの破棄 kill <コンテナ>
- 一覧表示 ps -a
- ポートマッピングの表示 port <コンテナ>
- コンテナの削除 rm <コンテナ>
イメージからのコンテナの作成,コンテナの開始・停止・削除,ローカルのイメージの確認
- イメージからのコンテナの作成と開始
Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージからコンテナを作成して開始する.
docker run --name myubuntu -p 8888:8888 -it ubuntu:24.04 /bin/bash
次の実行画面では,Linuxコマンドの pwd, ls を実行した後,「exit」で切断している.
各オプションの説明:
--name myubuntu
:コンテナに識別用の名前を付与する
-it
:対話的な操作を可能にし(-i
),疑似TTY(端末)を割り当てる(-t
)
-p 8888:8888
: Jupyter Notebook のためにポート8888のマッピングを行う
ubuntu:24.04
:使用するベースイメージである
/bin/bash
:コンテナ起動時に実行するコマンドである
- 停止中のコンテナへの接続.「exit」で切断.
docker start
コマンドにより,停止中のコンテナを実行する.
docker exec
コマンドにより,実行中のコンテナに新しいプロセスとして接続し,exit
コマンドで接続を終了する.そのとき,コンテナは停止せずに実行を継続する.
docker start myubuntu && docker exec -it myubuntu /bin/bash
exit
- 実行中の myubuntu コンテナを停止(Exited)する
docker stop myubuntu
- 停止中の myubuntu コンテナを実行中(Up)にする
docker start myubuntu
- 実行中あるいは停止中のコンテナの一覧表示
docker ps -a
- 単一コンテナの停止と削除
docker rm -f <コンテナID>
- すべてのコンテナの停止と削除(コマンドプロンプト用)
for /f "tokens=*" %i in ('docker ps -a -q') do docker rm -f %i
- すべてのコンテナの停止と削除(バッチファイル用)
for /f "tokens=*" %%i in ('docker ps -a -q') do docker rm -f %%i
- イメージの一覧表示
docker images
コンテナからイメージを作成
- docker commit により,コンテナからイメージを作成
コンテナIDを指定する必要がある.コンテナIDは,「docker ps -a」で調べておく.
下の実行例では,イメージ名として「myubuntu2404:1.0」を指定している.
「myubuntu2404:1.0」は,自分の使いたいイメージ名を指定すること.
docker ps -a
docker commit <コンテナID> myubuntu2404:1.0
- イメージが増えたことを確認
docker images
- 確認のため,いま作成したイメージを使い,コンテナを作成.起動.「exit」で切断.
docker run -it myubuntu2404:1.0 /bin/bash
exit
Dockerfile を使い,イメージファイルを生成
- 空のディレクトリを作る
- そのディレクトリの中に,Dockerfile を次のように作成して保存する
次のDockerfileは,Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを取得し,Python環境を構築している.Miniconda3を用いてPython 3.12環境を作成し,NumPy,Pandas等の科学技術計算ライブラリを導入している.Jupyter NotebookをPort 8888で起動するよう設定し,開発環境としてcmake,git等の基本ツールも導入している
FROM ubuntu:24.04
# 環境変数の設定
ENV PATH=/opt/conda/bin:$PATH \
SHELL=/bin/bash \
DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Tokyo
# システムパッケージのインストール
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential && \
rm -rf /var/lib/apt/lists/*
# Miniconda3のインストール
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \
rm Miniconda3-latest-Linux-x86_64.sh
# condaの初期設定とdev環境の作成
RUN /opt/conda/bin/conda init bash && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc
RUN /opt/conda/bin/conda create -n dev python=3.12 -y && \
/opt/conda/bin/conda install -n dev -y numpy pandas matplotlib scikit-learn jupyter pylint pytest black && \
echo "conda activate dev" >> /root/.bashrc
# Jupyterの設定
RUN mkdir -p /root/.jupyter && \
/opt/conda/envs/dev/bin/jupyter notebook --generate-config && \
echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
# 作業ディレクトリの設定
WORKDIR /workspace
# Jupyterのポートを公開
EXPOSE 8888
# コンテナ起動時のコマンド
CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \
/opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
- Dockerfileをもとにイメージを作成
「docker build」コマンドは,カレントディレクトリのDockerfileを基にイメージを生成する.作成したイメージには,識別用の名前(例:myubuntu2404)とバージョン管理用のタグ(例:1.0)を設定できる.
その後,「docker images」コマンドにより,ローカルに保存された全てのイメージを一覧形式で確認できる.
docker build -t myubuntu2404:1.0 .
docker images
- 作成されたイメージからのコンテナの作成と実行
docker run --name myubuntu -p 8888:8888 -it myubuntu2404 /bin/bash
未使用リソースの削除
- 未使用リソースの一括削除
docker system prune -a
- 未使用コンテナの削除
docker container prune
- 未使用イメージの削除
docker image prune
リソース管理(Docker Desktop を使用)
docker.service not found
エラー
Docker のインストール状態を正確に確認するため,docker version
コマンドを実行する.
permission denied
エラー
sudo usermod -aG docker $USER
を実行後,システムからログアウトし,再ログインしてからインストールを実行する.
Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージからコンテナを作成して開始する.
docker run --name myubuntu -p 8888:8888 -it ubuntu:24.04 /bin/bash
次の実行画面では,Linuxコマンドの pwd, ls を実行した後,「exit」で切断している.

各オプションの説明:
--name myubuntu
:コンテナに識別用の名前を付与する-it
:対話的な操作を可能にし(-i
),疑似TTY(端末)を割り当てる(-t
)-p 8888:8888
: Jupyter Notebook のためにポート8888のマッピングを行うubuntu:24.04
:使用するベースイメージである/bin/bash
:コンテナ起動時に実行するコマンドである
docker start
コマンドにより,停止中のコンテナを実行する.
docker exec
コマンドにより,実行中のコンテナに新しいプロセスとして接続し,exit
コマンドで接続を終了する.そのとき,コンテナは停止せずに実行を継続する.
docker start myubuntu && docker exec -it myubuntu /bin/bash
exit

docker stop myubuntu

docker start myubuntu

docker ps -a

docker rm -f <コンテナID>
for /f "tokens=*" %i in ('docker ps -a -q') do docker rm -f %i
for /f "tokens=*" %%i in ('docker ps -a -q') do docker rm -f %%i
docker images

コンテナIDを指定する必要がある.コンテナIDは,「docker ps -a」で調べておく. 下の実行例では,イメージ名として「myubuntu2404:1.0」を指定している. 「myubuntu2404:1.0」は,自分の使いたいイメージ名を指定すること.
docker ps -a
docker commit <コンテナID> myubuntu2404:1.0

docker images

docker run -it myubuntu2404:1.0 /bin/bash
exit

次のDockerfileは,Ubuntu 24.04 LTS(Long Term Support:長期サポート版)のイメージを取得し,Python環境を構築している.Miniconda3を用いてPython 3.12環境を作成し,NumPy,Pandas等の科学技術計算ライブラリを導入している.Jupyter NotebookをPort 8888で起動するよう設定し,開発環境としてcmake,git等の基本ツールも導入している
FROM ubuntu:24.04
# 環境変数の設定
ENV PATH=/opt/conda/bin:$PATH \
SHELL=/bin/bash \
DEBIAN_FRONTEND=noninteractive \
TZ=Asia/Tokyo
# システムパッケージのインストール
RUN apt-get update && apt-get upgrade -y && \
apt-get install -y python3 python3-pip python3-dev wget curl git cmake gnupg software-properties-common build-essential && \
rm -rf /var/lib/apt/lists/*
# Miniconda3のインストール
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \
bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/conda && \
rm Miniconda3-latest-Linux-x86_64.sh
# condaの初期設定とdev環境の作成
RUN /opt/conda/bin/conda init bash && \
echo ". /opt/conda/etc/profile.d/conda.sh" >> /root/.bashrc
RUN /opt/conda/bin/conda create -n dev python=3.12 -y && \
/opt/conda/bin/conda install -n dev -y numpy pandas matplotlib scikit-learn jupyter pylint pytest black && \
echo "conda activate dev" >> /root/.bashrc
# Jupyterの設定
RUN mkdir -p /root/.jupyter && \
/opt/conda/envs/dev/bin/jupyter notebook --generate-config && \
echo "c.NotebookApp.ip = '*'" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.port = 8888" >> /root/.jupyter/jupyter_notebook_config.py && \
echo "c.NotebookApp.allow_root = True" >> /root/.jupyter/jupyter_notebook_config.py
# 作業ディレクトリの設定
WORKDIR /workspace
# Jupyterのポートを公開
EXPOSE 8888
# コンテナ起動時のコマンド
CMD ["bash", "-c", ". /opt/conda/etc/profile.d/conda.sh && conda activate dev && \
/opt/conda/envs/dev/bin/jupyter notebook --allow-root --ip=* --port=8888 --no-browser"]
「docker build」コマンドは,カレントディレクトリのDockerfileを基にイメージを生成する.作成したイメージには,識別用の名前(例:myubuntu2404)とバージョン管理用のタグ(例:1.0)を設定できる.
その後,「docker images」コマンドにより,ローカルに保存された全てのイメージを一覧形式で確認できる.
docker build -t myubuntu2404:1.0 .
docker images
docker run --name myubuntu -p 8888:8888 -it myubuntu2404 /bin/bash
docker system prune -a
docker container prune
docker image prune
>Docker Desktopの設定でWSL 2に割り当てるリソースを適切に管理する
メモリ使用量,ディスク容量の設定:Docker Desktop > Settings > Resources > WSL Integration
ローカルフォルダのマウント
ローカルフォルダをマウントする例
docker run --rm -v %cd%/windows-file:/app ubuntu:24.04 ls /app
Docker 上でサーバを起動.ポートマッピングを行う(ホストは Ubuntu)
- 前準備
sudo apt -y update
- サーバの起動
公式の「はじめよう」のページ https://docs.docker.com/get-started/ により,サーバを起動してみる.
次の操作では,ポート 3000 をポート 80 にマッピングしている.
ローカルホストからのみアクセス可能にする場合は「127.0.0.1:3000:80」のようにする
docker run -d -p 3000:80 docker/getting-started
- SSH でリモート接続
次の操作では,ポート 8022 をポート 22 にマッピングしている.
docker run -p 8022:22 -it myubuntu2404:1.0 /bin/bash sudo adduser --uid 1234 --ingroup sudo --home /home/ai ai
Docker Compose の「はじめよう」を実行(ホストはUbuntu)
次の Docker Compose の「はじめよう」のページの記載通りに実行を進める.
https://docs.docker.com/compose/gettingstarted/
- 前準備
Docker Compose のインストールが終わっていること. ここでは,Docker Decktop に同封の Docker Compose を使用している.
- プロジェクトのディレクトリの作成
mkdir composetest cd composetest
- プロジェクトのディレクトリに app.py を作る.
https://docs.docker.com/compose/gettingstarted/ の app.py を使用.
- プロジェクトのディレクトリに requirements.txt を作る.
https://docs.docker.com/compose/gettingstarted/ の requirements.txt を使用.
- プロジェクトのディレクトリに Dockerfile を作る.
Docker イメージファイルの生成のために使用される. app.py が使用するソフトウエア(Python 処理系など)が設定されている.
https://docs.docker.com/compose/gettingstarted/ の Dockerfile を使用.
- プロジェクトのディレクトリに docker-compose.yml を作る.
サービスの設定を行っている.
https://docs.docker.com/compose/gettingstarted/ の docker-compose.yml を使用.
- 「docker compose up」を実行することにより,アプリケーションのビルドと実行を行う.
エラーメッセージが出ていないことを確認.
docker compose up
- ポート番号 8000 で,Webサーバにアクセスし,結果を見る.
curl http://localhost:8000