1
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 3 years have passed since last update.

コンテナ(Docker)におけるポートフォワーディング

Last updated at Posted at 2021-11-05

#ポートフォワーディングとは
ポート毎に接続先の仮想マシンを変える場合などに、ポートと接続する仮想マシンを指定して紐付けします。
Dockerでは、イメージからコンテナを立ち上げる時にポートを指定することができます。

#Dockerにおけるポートフォワーディング
前述の通り、コンテナを立ち上げる際にポートを指定できます。

$ docker pull nginx
$ docker run --name mynginx -d -p 8080:80 nginx

以上では、nginxイメージをPullしてきて、mynginxというコンテナ名でデーモンとしてバックグラウンドで起動しています。
-pオプションでポートフォワーディングの設定をしています。
docker psコマンドでポートフォワーディングが設定されていることが確認できます。

$ docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                  NAMES
7----------b   nginx     "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->80/tcp   mynginx

#curlでアクセスしてみる
curlコマンドで、localhostの8080番にアクセスしてみます。
以下のようなレスポンスが返ってきます。

$ curl http://localhost:8080

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

以下のように、ブラウザでも確認できます。
image.png

#どのようなアクセスが発生したのか
なぜアクセスができたのかを振り返ってみたいと思います。

コンテナを立ち上げる際にホスト側のポートを指定しました。コンテナ側は、WEBサーバ(nginx)をコンテナ内に立ち上げるために80(HTTP)を指定しています。
ホスト側のポートは基本的になんでもOKですが、コンフリクトが起きてしまうとアクセスができないことに注意して設定しましょう。

$ docker run --name mynginx -d -p 8080:80 nginx

先ほど記載をした以上の設定では、ホスト側の8080ポートにアクセスが来た際に、nginxコンテナの80ポートへフォワーディングする設定となっています。図で示すと以下のような形です。
image.png
(参照先:https://tech-lab.sios.jp/archives/19073)

#最後に
Dockerコンテナにおいて、ポートフォワーディングの設定を行う際は
docker container psコマンドでホスト側で既に設定されているポートを確認してから設定するようにした方がいいですね。

1
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
1
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?