CentOS 7 上の Dockerコンテナ にウェブサーバーを入れた場合、80番以外のポートで公開することはできないようです。
例えば、
まず、firewall-cmd
コマンドで 8080番ポートを開けておき、
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
以下のように Apache のイメージを元にした Dockerコンテナを起動します。
docker run -dit --name my-apache-app -p 8080:80 httpd:2.4
この操作によって、8080番ポートでウェブサイトを公開できるのかなと思ったのですが、少なくとも CentOS 7 の場合はうまくいきません。firewalld の設定に問題があり(?)、外部からのアクセスを Dockerコンテナに渡すところで止まっているようです。
似たような問題かなと思ったのが、Docker vs. firewalld on CentOS 7 · Issue #16137 · moby/moby · GitHub です。ここでは、Docker 自体の問題ではなく、RedHat (CentOS) 側のバグだと主張されており、firewalld のレポジトリ側にも issue が投稿されていましたが、既に解決済みとなっています。最初のページにあった解決策らしき手順も試してみましたがうまくいきません。
今回はこれ以上深入りする時間がなかったのですが、今後何解決策が見付かりましたらここに追記したいと思います。