日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)

發布時間:2023/11/28 生活经验 29 豆豆

端口映射

映射容器內應用的服務端口到本地宿主主機

1. 從外部訪問容器應用

在啟動容器的時候,如果不指定對應的參數,在容器外部是無法通過網絡來訪問容器內的網絡應用和服務的。當容器中運行一些網絡應用,要讓外部訪問這些應用時,可以通過 -P 或 -p 參數來指定端口映射。當使用 -P (大寫的)標記時,Docker 會隨機映射一個端口到內部容器開放的網絡端口:

wohu@iZm5egn5zptnov4j3oxh4fZ:~/docker$ docker run -d -P training/webapp python app.py
Unable to find image 'training/webapp:latest' locally
latest: Pulling from training/webapp
e190868d63f8: Pull complete 
909cd34c6fd7: Pull complete 
0b9bfabab7c1: Pull complete 
a3ed95caeb02: Pull complete 
10bbbc0fc0ff: Pull complete 
fca59b508e9f: Pull complete 
e7ae2541b15b: Pull complete 
9dd97ef58ce9: Pull complete 
a4c1b0cb7af7: Pull complete 
Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11d
Status: Downloaded newer image for training/webapp:latest
4233fd67e97c62a073353315bf236ab081ae4ec501ae91ef1a62a4782004c5cb
wohu@iZm5egn5zptnov4j3oxh4fZ:~/docker$ docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
4233fd67e97c        training/webapp     "python app.py"     12 seconds ago      Up 11 seconds       0.0.0.0:32768->5000/tcp   reverent_blackburn
wohu@iZm5egn5zptnov4j3oxh4fZ:~/docker$ 
  • -d 啟動一個daemon并在后臺運行
  • -P 映射一個網絡端口
  • training/webapp docker 社區提供的,預先創建好的模板,里面包含一個簡單的 Python Flask web應用

可以使用 docker ps 看到,本地主機的 32768 被映射到了容器的 5000 端口。訪問宿主主機的 32768 端口即可訪問容器內Web應用提供的界面。同樣,可以通過docker logs命令來查看應用的信息:

wohu@iZm5egn5zptnov4j3oxh4fZ:~/docker$ docker logs -f reverent_blackburn * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

-p (小寫的)可以指定要映射的端口,并且,在一個指定端口上只可以綁定一個容器。支持的格式有

  1. IP:HostPort: ContainerPort
  2. IP::ContainerPort
  3. HostPort:ContainerPort

2. 映射所有接口地址

使用 HostPort:ContainerPort 格式將本地的 5000 端口映射到容器的 5000 端口,可以執行:

docker run -d -p 5000:5000 training/webapp python app.py

此時默認會綁定本地所有接口上的所有地址。多次使用 -p 標記可以綁定多個端口。例如:

docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

3. 映射到指定地址的指定端口

可以使用 IP:HostPort:ContainerPort 格式指定映射使用一個特定地址,比如 localhost 地址 127.0.0.1:

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

4. 映射到指定地址的任意端口

使用 IP::ContainerPort 綁定 localhost 的任意端口到容器的 5000 端口,本地主機會自動分配一個端口:

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

還可以使用 udp 標記來指定 udp 端口:

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

5. 查看映射端口配置

使用 docker port 命令來查看當前映射的端口配置,也可以查看到綁定的地址:

wohu@iZm5egn5zptnov4j3oxh4fZ:~/docker$ docker port reverent_blackburn 5000
0.0.0.0:32768
wohu@iZm5egn5zptnov4j3oxh4fZ:~/docker$ 

注意:
容器有自己的內部網絡和 IP 地址,使用 docker inspect + 容器 ID 可以獲取容器的具體信息。

總結

以上是生活随笔為你收集整理的Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。