1.1 経緯
複数台のPCで作業するときに、効率的に環境を共有できるようにDockerを導入します。素人の学習備忘録であるため、不備がある場合はコメントしていただけますと幸いです。
※参考にした資料はページ下にまとめて記載しています
1.2 Dockerとは
仮想化の実装方式はハイパーバイザー型(タイプ1ハイパーバイザー)・ホスト型(タイプ2ハイパーバイザー)・コンテナ型の3種類存在します。Dockerが属するコンテナ型は、他の2つ方式とは異なり、OS機能をホストOSが担うことでゲストOSが不要であるという特徴があります。これにより、使用するリソース(CPUやメモリ、ストレージなど)を軽減し、動作が軽くなります。
https://it-infomation.com/virtualization-differences-hosted-hypervisor-container/
2.1 Dockerのインストール
Windows PCにDockerをインストールする方法として、Windows上にDocker Desktop for Windowsをインストールする方法と、WSL Ubuntu上にDocker Community Edition (Docker-CE)をインストールする方法があるが、今回は個人利用かつ簡単のために前者を使用します。
※詳しくはこちらの動画を参照(https://www.youtube.com/watch?v=6kCZJLZBVpQ)
Docker公式HPからインストーラをダウンロードし実行し、PCを再起動(close and restart)するとインストールは完了です。
※url: https://docs.docker.com/desktop/setup/install/windows-install/
※Windows11 Proの場合は、hyper-Vの代わりにWSL2を使用する、を選択
<インストール後の流れ>
- Docker Desktopの初回起動
- サブスクの同意画面に同意(agree)
- サインインや調査回答(skip可能)
- 設定の変更
・Generalの使用状況の送付(Send usage statistics)をオフ
・Notificationを好みに変更
・変更の適応(Apply & restart)
2.2 Dockerの動作確認(やらなくてもいい)
Windows Powershellを開き以下の作業を行います。
・Docker バージョン確認
docker -v
Docker version 27.3.1, build ce12230
・Docker Compose バージョン確認
docker compose version
Docker Compose version v2.29.7-desktop.1
・Docker buildx バージョン確認
docker buildx version
github.com/docker/buildx v0.17.1-desktop.1 1a2ee7e8d945b88fdc18f1948da491c2f540dec9
・hellow-world imageの実行
docker images
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
・Docker image listの表示
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d2c94e258dcb 18 months ago 13.3kB
・Docker container(動作中)の確認
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
・Docker container(停止)の確認
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
880dd473f14f hello-world "/hello" About a minute ago Exited (0) About a minute ago nervous_curran
・Docker containerの削除
docker rm [container ID]
docker rm 880dd473f14f
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
・Docker imageの削除
docker rmi [image ID]
docker rmi d2c94e258dcb
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
3 仮想環境の構築
Dockerで仮想環境を構築するためには、指示書(Dockerfile)をもとに設計図(Docker Image)を構築し、実行環境(Docker Container)を生成する必要があります。
3.1 事前準備
VSCodeの拡張機能であるDockerとDev Containersをインストールします。
3.2 Dockerfileの作成
Ubuntu22.04にPython3.12をインストールすることを目標としましたが、自分のスキルが足りず、自作のDockerfileではpython3.10しかインストールできませんでした。そこで、今回はDocker hubにあるpython3.12のイメージを使用しました。試行錯誤しましたが、結論としましては、Pythonのimageを利用するほうが楽でいいと思います。
FROM ubuntu:22.04
RUN set -x && \
export DEBIAN_FRONTEND=noninteractive \
&& apt-get update && apt-get install -y --no-install-recommends \
git \
curl \
vim \
python3 \
python3-pip \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# シンボリックリンクを作成して、python3.12をpythonとしても使えるようにする
RUN ln -s $(which python3) /usr/bin/python
COPY requierments.txt .
RUN python -m pip install --upgrade pip && \
python -m pip install -r requierments.txt
WORKDIR /home/var
FROM python:3.12.7-bookworm
3.3 Docker imageの構築
docker build -t <image name> <Dockerfile's directory>
・-t :image名の指定
3.3 Docker Containerの生成
docker run -v ${PWD}:/home/src -it --rm --entrypoint /bin/bash <image name>
・-v ${PWD}:/home/src:ホストのディレクトリをコンテナにマウント
・-it:コンテナ自動終了の防止
・-d:バックグラウンドで起動
・-rm:終了後、コンテナを自動削除
・--entrypoint /bin/bash:コンテナ作成後、自動的に実行されるコマンドを"/bin/bash"(対話型シェルの起動)に変更
4 まとめ
私がDockerを導入するまでに集めた基礎知識をまとめてみました。今後も新しい学びがあったら定期的に追加しようと思います。
※(現在) VSCodeのDevContainer機能を用いた環境構築に取り組み中
参考
https://qiita.com/Yuu_tsm/items/fe5bd33a49c6e8d9ae2a
https://www.dx-digital-business-sherpa.jp/blog/containerized-virtualization
https://it-infomation.com/virtualization-differences-hosted-hypervisor-container/