inoino-blog
Dockerをツールとして使う
2024-12-30

Dockerの使い方について、本や見聞きしたことの一部をまとめてみました。

Dockerの使用例

最後のツールを提供を目的に使用される玄人の方の話を聞いたので、それについて簡単にまとめていきます。Dockerをツールとして使用することが出来るようです。

Dockerの基本

まずは、Dockerの基本の話を少し。

たとえば、nginxのサーバーを立ててみます。

/testディレクトリを作って、DockerFileを作ります。

FROM nginx:1.27.3

DockerFileは

  1. docker build
  2. docker run

の順で起動します。

docker build -t inoino-v1
docker run -p 80:80 -t inoino-v1

localhost:80でnginxの画面が確認できれば、成功です。

インストラクション

DockerFile内に書かれる、いくつかのインストラクションについて説明します。

※ CMDは一つだけ

CMDを上書きする

現状のDockerFileはこんな感じ

FROM nginx:1.27.3

この場合、CMDはないですが、FROMで読み込まれているファイル内で定義されています。

以下のリンクのファイル内でCMDが書かれています。

icondocker-nginx/mainline/debian/Dockerfile at d21b4f2d90a1abb712a610678872e804267f4815 · nginxinc/docker-nginx · GitHub

具体的には以下のように

CMD ["nginx", "-g", "daemon off;"]

すなわち、docker run時(起動時)に上のCMDが呼び出されてnginxが起動します。

DockerFileで上書き

DockerFileにCMDを記述すれば、FROMで読み込まれているnginxのCMDは実行されません。

FROM nginx:1.27.3

CMD touch /tmp/aaa.txt

この状態で、DockerFileを実行してみます。

docker build -t inoino-v1
docker run -p 80:80 -v ./:/tmp -it inoino-v1

マウントしたディレクトリにaaa.txtが作成され、Dockerが終了します。

CLIのコマンドから上書き

docker run時(起動時)にはDefaultではCMDが実行されますが、CMDの代わりにDockerコンテナ内で実行できるコマンドなら実行できます。

例えば、こんな風に

docker run -p 80:80 -v ./:/tmp -it inoino-v1 touch /tmp/ccc.txt

この方法でも、マウントしたディレクトリにccc.txtが作成されます。

ツールをDockerで使用する

上で通常のCMDでnginxを起動する代わりにccc.txtaaa.txtを作成できました。

この特性を使用してツールとして使用することが出来るわけです。Docker内でツールを作成して、CMDを実行する代わりに、実行時にそのツールを実行するわけです。

最後に

内容は薄いですが、Dockerにこんな使い方もあると知られるのはいいことだと思ったため、記事として記述してみました。誰かのなにかになりますように。