0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

docker-composeのrunではポートは作成されない。(ホストからコンテナに接続できない)

Last updated at Posted at 2023-05-03

1.ホストからコンテナに接続できず、ERR_CONNECTION_REFUSEDがブラウザに表示

久しぶりにdocker-compose.ymlを作り、Webサーバのコンテナを起動し、ブラウザ(Chrome)でアクセスすると、サーバにアクセスできず、以下のメッセージが表示される。

このサイトにアクセスできません

localhost で接続が拒否されました。
次をお試しください

接続を確認する
プロキシとファイアウォールを確認する

ERR_CONNECTION_REFUSED

コンテナにログインをして、以下のようにcurlでアクセスするとindexファイルが取得できる。

curl http://127.0.0.1

つまり、コンテナ内でWebサーバーは稼働しており、ホストからコンテナへのアクセスができていない。

2.コンテナとホストのポート転送を確認

ポートの転送ができているのかをdockerコマンドで確認。
PORTSにIPアドレスがないので、転送できていない。

docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS     NAMES
ded69e07b4fc   nginx:latest   "/docker-entrypoint.…"   9 seconds ago   Up 8 seconds   80/tcp    121nginx-nginx-run-7badcf62fd8b

念のため、コンテナのIPアドレスを確認してみたが、空文字。

docker inspect
docker inspect --format '{{.NetworkSettings.IPAddress}}' ded69e07b4fc
''

docker-compose.ymlは以下のような簡単なものだが、ポート転送の記述はしてある。
ちなみに、docker-composeを使ったのは、このあといくつか入れたい処理があったため。

docker-compose.yml
version: '3.4'

services:
  nginx:
    image: nginx:latest
    ports:
      - "3000:80"

3.エラー原因:docker-compose upではなく、runをつかっていた

表層的な原因としては、ホストとコンテナの間の通信ができていないことなのは分かった。
それをどうやって解消するのか?

いろいろ探して、いろいろ調べ、試したけどだめ。
どうも自分のケースと他のケースは原因が違うようだ。

とりあえず、過去に使っていたプロジェクトのコンテナを起動して成功したものと、失敗したものの状況を比較することにした。
過去に使っていたプロジェクトのコンテナは、ブラウザにWebサーバからのレスポンスが表示された。

そのとき、あることに気づいた。
過去のプロジェクトは、特にコンテナに入るつもりはないので、upで起動 していた。
一方、今問題となっているコンテナは、早くコンテナ内でコマンドが打ちたかったので、upせずにrunでコンテナを起動 していた。

docker-compose run
docker-compose run nginx sh

実は、これが接続できない原因だった。ドキュメントに下記の通り記載がある。

docker-compose run コマンドはサービス設定ファイルで指定したポートを作成しません。

ということで、以下のようにupをして、ブラウザでアクセスするとindexページが表示された。

docker-compose up
docker-compose up

dockerコマンドでポートを確認すると、マッピング(0.0.0.0:3000->80/tcp)も確認できた。

docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                  NAMES
1fee115d6b0f   nginx     "/docker-entrypoint.…"   56 seconds ago   Up 55 seconds   0.0.0.0:3000->80/tcp   quirky_moser

久しぶりに触ると色々忘れるんだなと思いました。
もし、自分のようなオッチョコチョイの人がいてハマっている人の助けになれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?