0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerを導入したPython開発環境の構築

Posted at

1.1 経緯

 複数台のPCで作業するときに、効率的に環境を共有できるようにDockerを導入します。素人の学習備忘録であるため、不備がある場合はコメントしていただけますと幸いです。
※参考にした資料はページ下にまとめて記載しています

1.2 Dockerとは

仮想化の実装方式はハイパーバイザー型(タイプ1ハイパーバイザー)・ホスト型(タイプ2ハイパーバイザー)・コンテナ型の3種類存在します。Dockerが属するコンテナ型は、他の2つ方式とは異なり、OS機能をホストOSが担うことでゲストOSが不要であるという特徴があります。これにより、使用するリソース(CPUやメモリ、ストレージなど)を軽減し、動作が軽くなります。

image.png

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を使用する、を選択

<インストール後の流れ>

  1. Docker Desktopの初回起動
  2. サブスクの同意画面に同意(agree)
  3. サインインや調査回答(skip可能)
  4. 設定の変更
    ・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
python imageの使用
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/

  1. https://www.youtube.com/watch?v=6kCZJLZBVpQ
    https://www.youtube.com/watch?v=6b7g8swdXCg
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?