2
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?

More than 1 year has passed since last update.

はじめてのDockerfile

Posted at

はじめに

前回までの記事ではDocker Hubにアップされているイメージをそのまま使いましたが、今回はDockerfileを使ってカスタマイズしたイメージを利用する方法を備忘録としてまとめてみました。

やりたい事

  • AlmaLinux9のイメージをベースにして、Apacheの入ったコンテナを作る。
  • 任意のフォルダをマウントして、Apache上でサンプルのHTMLを動作させる。

作成したDockerfile

  • OSはAlmaLinux 9を使うためalmalinux:9と書いていますが、AlmaLinuxの最新版(latest)を使う場合はalmalinuxと指定するだけで良いそうです。
    • 実際の開発環境だと、しっかりバージョン指定した方が無難だと思います。
  • docker run時に実行するCMDについては、以下のDockerfileでは推奨されている「exec形式」を使っています。
    • CMD /usr/sbin/httpd -D FOREGROUNDのような「シェル形式」は非推奨のようです。
  • EXPOSEで80番ポートを明示的に開放していますが、これはもしかすると不要かもしれません。
Dockerfile
# OSの名前とバージョン
FROM almalinux:9

# 作成するイメージに付けるラベル情報
LABEL maintainter="nkojima" \
      version="1.0"

# RUN, CMD, ENTRYPOINT, docker run, execで実行するコンテナプロセスのユーザーを指定する
USER root

# システム全体を更新
RUN dnf update -y

# httpdをインストールして起動
# コンテナは起動後、実行しているプロセスがなかったら停止してしまうためFOREGROUNDで起動する
RUN dnf install -y httpd
RUN systemctl enable httpd
CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

# 80番ポートを開放する
EXPOSE 80

イメージの作成(構築)

  • Dockerfileのあるフォルダに移動した後、以下のコマンドを実行してDockerfileでカスタマイズしたイメージを作成します。
  • -tオプションを使い、作成したイメージの名前を alma9_httpdとしました。
PowerShell
PS> docker build . -t alma9_httpd

コンテナの作成と実行

  • 前回の記事で書いた方法で任意のフォルダをマウントした上で、コンテナを作成・実行します。
    • 前回と違いマウント先がtarget=/var/www/htmlとなっていますが、これはAlmaLinux上のApacheのDocumentRootが/var/www/htmlとなっているためです。
PowerShell
PS> docker run --name alma9_test -p 10088:80 -it --mount type=bind,source=D:\test,target=/var/www/html alma9_httpd

参考URL

2
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
2
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?