Yanor.net/
Wiki
Blog
GitHub
Sandbox
開始行:
* CMDで指定する配列と文字列の違い [#kf813bfe]
** Execフォームとシェルフォーム [#eec8dad3]
*** Execフォーム [#zc6e70ae]
CMD ["echo", "Hello World"]
*** シェルフォーム [#nf92b8fc]
CMD "echo Hello World"
- Execフォームはシェルを介在せずに直接実行される
- シェルフォームはBashなどシェルを介して実行される
** Execフォームが問題になるケース [#a7db6ce4]
- Execフォームで指定すると、シェルの機能、変数の展開やパ...
- 例えば環境変数$PATHを表示しようとすると、
vi Dockerfile
-----------------------
FROM ubuntu
CMD [ "echo", "$PATH" ]
-----------------------
docker build -t test .
docker run test
=> $PATH
- Exceフォームでは'''$PATH'''が展開されずに、文字通りに''...
- これを展開させるには、
vi Dockerfile
-----------------------
FROM ubuntu
CMD echo $PATH
-----------------------
docker build -t test .
docker run test
=> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/...
- シェルフォームにする。シェルが$PATHを展開してくれる
*** Execフォームでこの問題を解決するには [#w8ce27ff]
vi Dockerfile
-----------------------
FROM ubuntu
CMD [ "sh", "-c", "echo $PATH" ]
-----------------------
docker build -t test .
docker run test
=> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/...
- CMDの中でshを-cオプションで起動して、その中で任意のコマ...
** Execフォームとシェルフォームどちらがいいのか? [#d3a98...
- Docker公式ではExecフォームが推奨されている
- が、特別大きなメリットはないように思う
- 環境変数を参照したいなど、シェルの機能が使いたい時は素...
- https://docs.docker.com/engine/reference/builder/#cmd
** 参考 [#w836fa83]
- https://nickjanetakis.com/blog/docker-tip-63-difference...
- https://stackoverflow.com/questions/40454470/how-can-i-...
終了行:
* CMDで指定する配列と文字列の違い [#kf813bfe]
** Execフォームとシェルフォーム [#eec8dad3]
*** Execフォーム [#zc6e70ae]
CMD ["echo", "Hello World"]
*** シェルフォーム [#nf92b8fc]
CMD "echo Hello World"
- Execフォームはシェルを介在せずに直接実行される
- シェルフォームはBashなどシェルを介して実行される
** Execフォームが問題になるケース [#a7db6ce4]
- Execフォームで指定すると、シェルの機能、変数の展開やパ...
- 例えば環境変数$PATHを表示しようとすると、
vi Dockerfile
-----------------------
FROM ubuntu
CMD [ "echo", "$PATH" ]
-----------------------
docker build -t test .
docker run test
=> $PATH
- Exceフォームでは'''$PATH'''が展開されずに、文字通りに''...
- これを展開させるには、
vi Dockerfile
-----------------------
FROM ubuntu
CMD echo $PATH
-----------------------
docker build -t test .
docker run test
=> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/...
- シェルフォームにする。シェルが$PATHを展開してくれる
*** Execフォームでこの問題を解決するには [#w8ce27ff]
vi Dockerfile
-----------------------
FROM ubuntu
CMD [ "sh", "-c", "echo $PATH" ]
-----------------------
docker build -t test .
docker run test
=> /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/...
- CMDの中でshを-cオプションで起動して、その中で任意のコマ...
** Execフォームとシェルフォームどちらがいいのか? [#d3a98...
- Docker公式ではExecフォームが推奨されている
- が、特別大きなメリットはないように思う
- 環境変数を参照したいなど、シェルの機能が使いたい時は素...
- https://docs.docker.com/engine/reference/builder/#cmd
** 参考 [#w836fa83]
- https://nickjanetakis.com/blog/docker-tip-63-difference...
- https://stackoverflow.com/questions/40454470/how-can-i-...
ページ名: