CMD命令とENTRYPOINT命令はコンテナ内で実行するPID1のプロセスを指定するもの
このイメージは一体何をするのか、何のためのイメージなのかを決定づける命令
FROM debian:9 CMD ping
$ sudo docker build -t myimage .
$ sudo docker run –rm –name myimage myimage
$ sudo docker run myimage date
CMD命令とは
PID1として実行するプロセスのコマンドを指定できる
※PID1とはinitプロセスであり、起動した時に最初に実行するコマンド
そのコマンドは docker run ${image} ${引数} の引数で上書きできる
### ENTRYPOINT命令のきそ
FROM debian:9 ENTRYPOINT ["ping"]
$ sudo docker build -t myimage .
$ sudo docker run –rm –name myimage myimage 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=2 ttl=61 time=398 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=61 time=67.5 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=61 time=50.9 ms
EXEC形式で書くと、引数を渡すことができる
$ docker container run –entrypoint date myimage
エントリーポイントを上書きできる
### CMD命令とENTRYPOINT命令の組み合わせ
FROM debian:9 CMD ["8.8.8.8"] ENTRYPOINT ["ping"]
$ sudo docker build -t myimage .
$ sudo docker run –rm –name myimage myimage
これで動く
ENTRYPOINT命令はPID1プロセスのコマンド
CMD命令はコマンドのデフォルト引数を指定できる
–entrypointで上書きできる
これは凄い、1ヶ月くらいやってもまだ理解したとは言い難い
PID1プロセスが大事なのはわかった