Docker объединяет ENTRYPOINT
и CMD
в одну командную строку, если оба используют нотацию JSON , как в вашем примере.
Это нотация JSON: CMD [ "dotnet", "/app/netcore/Somename.dll"]
Это обозначение оболочки: CMD dotnet /app/netcore/Somename.dll
Еще одна вещь, которую вам нужно знать - что написано в docker run ... <image_name> ...
после - рассматривается как CMD
.
Итак, в заключение.
Постоянная (неизменяемая) часть командной строки, например dotnet foo.dll
, которую можно ввести в ENTRYPOINT
.
Переменная часть, напримердополнительные аргументы, вы вводите с docker run
и опционально устанавливаете значения по умолчанию CMD
в Dockerfile
Пример:
Dockerfile
...
ENTRYPOINT ["dotnet", "/app/netcore/Somename.dll"]
CMD ["--help"]
Командная строка 1:
docker run ... <your image name> --environment=Staging --port=8080
В результате dotnet /app/netcore/Somename.dll --environment=Staging --port=8080
Командная строка 2:
docker run ... <your image name>
В результате dotnet /app/netcore/Somename.dll --help
.--help
исходит из значения по умолчанию, определенного в Dockerfile.