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?

More than 1 year has passed since last update.

Docker の実験(その8:Dockerfile のオプション)

Last updated at Posted at 2023-02-18

その7:イメージの作成のつづき。

前回作成した Dockerfile では、まだ不十分なところがあるので、少し仕上げていく。

EXPOSE を入れないと、イメージを受け取った人がどのポートで立ち上がるのかがわからないので、Dockerfile に記述することが重要である。
HEALTHCHECK
例えば、立ち上げている nginx コンテナの IP アドレスが 172.17.0.2 であり、それを、monitoring というコンテナから監視する場合、イメージ作成時に使用する Dockerfile には、以下のように記述するとよい。

--interval=DURATION (デフォルト30秒)
--timeout=DURATION(デフォルト30秒)
--start-period=DURATION(デフォルト0秒)
--retries=N (デフォルト 3)

(一例)

HEALTHCHECK --interval=5s CMD ping -c 1 172.17.0.2

(ローカルホストの監視の一例: curl の -f オプションは、結果だけを返す)

HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1

上記は、docker run でも使用できる。
--health-cmd を使える。
この様な監視には、busybox イメージからコンテナを作成するのがいいだろう。

$ docker run -dt --name tmp --health-cmd "curl http://localhost" --health-interval=5s busybox sh

ENTRYPOINT は、ランタイムでのコマンドの上書きを防ぐ。

(一例)

ENTRYPOINT ["/bin/ping"]

WORKDIR を使うと、コンテナは、そこに誘導される。

EMV を使うと、Dockerfile のメンテナンスが楽になる。

(一例)

ENV NGINX 1.2
RUN curl -SL http://example.com/web-$NGINX.tar.gz

環境変数をコンテナ作成時に渡すことができる。

$ docker run -dt --name env02 --env USER=testuser busybox sh

以下のような INSTRUCTION がある。

CMD | ENTRIPOINT | ENV | EXPOSE | LABEL | ONBUILD | USER | VOLUME | WORKDIR

その9:コンテナを Container Registry に登録するにつづく。

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?