🐙

Dockerfileでdockerコンテナ立ち上げからpythonの環境構築までやってみた

2023/08/14に公開

今回の記事はDockerfileを利用して「初めてのDocker利用-その1」の内容を再現してみたという内容です。

今回書いたDockerfileと正しく動くかの検証

今回書いたDockerfileは以下の通り。

FROM ubuntu:23.10
RUN apt update
RUN apt -y install python3

このDockerfileをtestフォルダ内においたとする。ここで、

$ cd test
$ docker build -t ubuntu-image:1.1 .

とtestフォルダに移動してdocker build -t ubuntu-image:1.1 .を実行することでubuntu-image:1.1というイメージが作成されていることがわかる。

$ docker images
REPOSITORY     TAG              IMAGE ID       CREATED         SIZE
ubuntu-image   1.1              be31fe97b438   3 hours ago     174MB

ここで、今回作成したubuntu-image:1.1イメージからubuntuコンテナを起動する。

$ docker container run -itd --name ubuntu ubuntu-image:1.5
274c70d0b5a45bf59df04b5ccaa9ab27448313f89d7e240bc98e962d8c928d1e

dockerのコンテナ状況を確認すると、

$ docker ps -a274c70d0b5a4   ubuntu-image:1.5
CONTAINER ID   IMAGE              COMMAND       CREATED         STATUS         PORTS     NAMES
274c70d0b5a4   ubuntu-image:1.1   "/bin/bash"   3 hours ago      Exited (0) 3 hours ago                 ubuntu

となっている。ここで注意したいのはubuntuコンテナは停止していることである。なのでコンテナを起動させた上で中に入る。

$ docker start ubuntu
ubuntu
$ docker container exec -it ubuntu /bin/bash
root@4410257b4787:/# 

この時、pythonのバージョンを確認すると、

root@4410257b4787:/# python3 --version
Python 3.11.4

となっており、初めからpythonが入っているコンテナになっていることがわかる。

Dockerfileの説明

DockerfileのRUN apt -y install python3の部分についてオプションの-yは何か聞かれた時に全てyesを返すオプションである。これがないと最後まで実行が止まる箇所があったのでそこは「初めてのDocker利用-その1」とは異なる部分になる。

Dockerfileの書き方

参考にすべきものとして「効率的に安全な Dockerfile を作るには」が挙げられる。また、Dockerfileでよく使われるコマンドをまとめておく。

コマンド 用途
FROM 本となるDockerイメージの指定
RUN コマンドの実行
ADD ファイル/ディレクトリの追加
CMD コンテナの実行コマンド1
ENTRYPOINT コンテナの実行コマンド2
WORKDIR 作業ディレクトリの指定
EMV 環境変数の指定
EXPOSE ポートのエクスポート

なお、CMDとENTRYPOINTの違いについて、前者はDockerfile実行時にデフォルトで実行したいコマンドを記載するのに対し、後者は必ず実行したいコマンドを記載する必要がある。

Discussion