
仮想マシンで Ubuntu 22.04.3 LTS を実行しています。ポート 80 で Nginx をインストールしました。
http://localhost:80 にアクセスすると、Nginx によって通常の Web サイトが表示されます。
次に、docker と 2 つのイメージをインストールしました。ポート 9000 でイメージ API アクセスを許可しました。
しかし、http://localhost:9000 にアクセスするとエラーが表示されます。Postman でアクセスすると 404 が返されます。
Nginx でポート 9000 をリンクまたは許可するか、docker からのアクセスをポートにリンクする必要があるようです。
Nginx でさらにポートを許可する方法や、ポート 9000 で公開されているコンテナーをリンクする方法を見つけることができませんでした。docker のイメージでは次のように表示されます。
0.0.0.0:9000->9000/tcp, :::9000->9000/tcp
サーバーの手順を実行しました:
cd /etc/nginx/sites-enabled
sudo "${EDITOR:-vi}" docker
server {
listen 80;
listen [::]:80;
server_name example.ubuntu.com;
root /var/www/docker;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
postman で GET を実行すると、 http://localhost:9000/kalum-management/v1/jornadas データが返されるはずです。何らかの理由で、Docker と Nginx が混同され、docker をポート 9000 に公開する方法がわかりません。
答え1
Dockerは独自のネットワークとネットワークアダプタを作成します。コンテナを実行するときに、network_mode hostオプションを使用して、ホストオペレーティングシステムからコンテナがリンクされているdockerネットワークに接続できます。docker composeを使用することをお勧めします。また、より多くのポートを公開するためのdocker-composeの例も紹介します。
version: '3'
services:
your_service_name:
container_name: your_container_name
image: your_image_name
network_mode: host
volumes:
- /path/on/host:/mnt
パブリック ポートとネットワーク モード ホストを一緒に使用することはできないことに注意してください。
このファイルをdocker-compose.ymlとしてディレクトリに保存し、次のように実行します。docker-compose up -d
オプション2
または、次のコマンドを使用してコンテナのIPアドレスを調べます。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name_or_id>
そして、http://localhost:9000 の代わりに、localhost をコンテナの IP に置き換えます。docker ネットワーク (コンテナの起動時に自動的に作成されます) がホストからアクセスできないため、機能しない可能性があります (間違っていたら訂正してください。デフォルトでは、ホスト オペレーティング システムのメイン ネットワークとコンテナがリンクされている docker ネットワークの間にルーティングはありません)