質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

2080閲覧

DockerでWebサーバを立ち上げた場合に、アクセス時にポート番号は省略できませんか?

taro373

総合スコア189

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2018/12/10 02:23

DockerでWebサーバを立ち上げる時に、ポートの指定を
「-p 8888:80」のように書く例がほとんどなのですが、

この書き方では、アクセス時はhttp://localhost:8080/となります。
ローカルでテストしているときはこれで良いのですが、
Webサーバを公開するとなった時に、ポート番号は指定しないで既定値に
したいと考えました。

下記の書き方もする例も見つけました。

$ sudo docker run -it -p 80:80 --link mysql:db --name wordpress centos:wordpress /bin/bash

Webサーバを立ち上げるのですから、locachostで参照するだけでは
ないと思います。
「-p 8080:80」と指定する場合と、「-p 80:80」としてする場合の
違いや、不都合(メリット・デメリット)について教えてください。

当該のサーバで、既にWebサーバ(apache)が起動している場合、
Dockerで起動したapacheには繋がりませんね。

ホスト名でアクセスしたときは、通常のドキュメントルートに、
ipアドレス(ポート番号は省略)でアクセスしたときは、Dockerで起動した
Webサーバにアクセスするということはできるのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teikoku-penguin

2018/12/10 03:43

質問のタイトルが質問内容に相応しくないので変更したほうが良いかと思います アクセス時にポート番号を省略できるかではなく、一つの物理ホストで複数のwebサーバーを構築する方法かと
taro373

2018/12/10 04:00

わからないことがわからない、状況でした。 教えていただきたかったことは、 DockerでWebサーバとなると、ポート番号をしている例ばかり出てきますが、 80番で起動しても動作できるのでしょうか です。 以下の流れで質問しました。 ・例を見ると8080:80とすることがおおい ・80:80の例もある ・80:80としてみたいが、既に動いていたらポートが重なる 実際には既にWebサーバが動いている状況ではないので、 3番目を考えてわかりにくい質問になってしましましたこと お詫びします。
guest

回答2

0

ベストアンサー

まず、http://teratail.com/のようにアクセスした場合、「80番ポート」をアクセスするように決まっています。

当該のサーバで、既にWebサーバ(apache)が起動している場合、

Dockerで起動したapacheには繋がりませんね。

はい、1つのポートに待ち受けできるプロセスは1つだけなので、先にApacheが待ち受けていれば別のプロセスが同じ80番ポートに待ち受けることはできません。

ホスト名でアクセスしたときは、通常のドキュメントルートに、

ipアドレス(ポート番号は省略)でアクセスしたときは、Dockerで起動した
Webサーバにアクセスするということはできるのでしょうか。

80番にはリバースプロキシを立てて、アクセス方法によって振り分ける、という方法が考えられます。

投稿2018/12/10 02:46

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taro373

2018/12/10 05:19

ありがとうございました。 次は「80番にはリバースプロキシを立てて、アクセス方法によって振り分ける」方法を かんばって調べます。 質問への追記に書きましたが、わかりにくい質問になってしましましたこと お詫びします。
guest

0

ホスト名でアクセスしたときは、通常のドキュメントルートに、
ipアドレス(ポート番号は省略)でアクセスしたときは、Dockerで起動した
Webサーバにアクセスするということはできるのでしょうか。

結論としてそのままでは無理かと思います。

質問主さんが思い描いている環境が以下の環境だったとして簡単に解説します。
(ネットワークエンジニアとかではないので間違ってたらすみません)

  • グローバルIPアドレス: 123.456.789.101
  • グローバルIPに紐づけされたドメイン: hoge.jp
  • 物理サーバーホスト名: www
  • 物理サーバーローカルアドレス: 192.168.1.2
  • ホストOS上 Apacheサーバー(webサーバーA)待機ポート: 80
  • Docker上 Apacheサーバー(webサーバーB)待機ポート: 80

上の環境であった場合
同じマシンではホストOS上のApacheサーバーとDocker上のゲストOSに乗っているApacheサーバーがどちらも80番ポートで待機しているのでどちらへのアクセスなのか判別できません。

もし同じ物理マシンで複数のwebサーバーを起動させるなら最低でも以下が必要かと思います。

  • webサーバーB(Docker)はコンテナの待機ポートを8080とし80番ポートへフォワーディングさせる設定にする
  • webサーバーB(Docker)のホスト名をwww2などホストマシンと被らないように設定する
  • 内向きDNSサーバーを立ててアクセスされたホスト名で物理マシンへのアクセスポートを変更する

参考にした記事
https://qiita.com/hacoten/items/0fb1a44390e1af35b50c

投稿2018/12/10 03:31

編集2018/12/10 03:32
teikoku-penguin

総合スコア314

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問