Традиционно [1], только пользователь root
может связывать порты до 1024. Однако, я думаю, вы обнаружите, что это не имеет значения для вашего конкретного случая использования. Порт, на котором служба прослушивает внутри контейнера, не имеет никакого отношения к порту, к которому подключаются удаленные клиенты. Сопоставление «портов, выставленных на хосте», с «портами, слушающими внутри контейнера», контролируется с помощью механизма докера публикация портов .
В вашем примере вы настроили бы свою службу на прослушивание чего-либо, кроме порта 80 ... для целей этого примера, скажем, вы настроили его на прослушивание на порту 8080.
Когда вы запускаете свой контейнер, сопоставьте порт 80 на вашем хосте с портом 8080 внутри вашего контейнера:
docker run -p 80:8080 ...
Теперь вы можете получить доступ к вашему сервису через порт 80 вашего хоста. Вы можете обрабатывать порт 443. Таким же образом.
Обратите внимание, что ключевое слово EXPOSE
в вашем Dockerfile по большей части не нужно. В типичной среде Docker это не работает и носит исключительно информационный характер. Вы можете публиковать порты независимо от того, были ли EXPOSE
d.
[1] Ситуация на самом деле немного более тонкая под Linux.