Commands
コンテナ起動時に渡されるコマンドについて (Docker)
基本形
起動後に 5 秒スリープするコンテナの例
Dockerfile
FROM Ubuntu
CMD sleep 5
CMD への渡し方は以下 2 通り。
CMD command param1CMD ["command", "param1"]
引数だけを自由にしたい場合
Dockerfile
FROM Ubuntu
ENTRYPOINT ["sleep"]
以下のような形でコンテナ起動時に引数を渡すことができる。
$ docker run ubuntu-sleep 10
引数に対してデフォルト値を設けたい場合
上の例だと、引数を渡さずにコンテナを立ち上げようとしたときにエラーになる。
これを防ぐため、デフォルト値を与える。
Dockerfile
FROM Ubuntu
ENTRYPOINT ["sleep"]
CMD ["5"]
もし引数を別途指定すれば上書きされる。
$ docker run ubuntu-sleep 10
この書き方をするときは json フォーマットで書かないといけない。
エントリポイントを起動時に変更したい場合
以下のようなコマンドでいける。
$ docker run --entrypoint sleep2.0 ubuntu-sleep 10
Kubernetes での方法
引数の変更
引数は以下のような形で渡せる。
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-sleep
spec:
containers:
- name: ubuntu-sleep
image: ubuntu-sleep
args: ["10"]
エントリポイントの変更
apiVersion: v1
kind: Pod
metadata:
name: ubuntu-sleep
spec:
containers:
- name: ubuntu-sleep
image: ubuntu-sleep
command: ["sleep2.0"]
args: ["10"]
つまり、マニフェストにおける command は Dockerfile における ENTRYPOINT であり、マニフェストにおける args は Dockerfile における CMD である。
