1. <i id="s6b2k"><small id="s6b2k"></small></i>
    <b id="s6b2k"><bdo id="s6b2k"></bdo></b>
  2. <wbr id="s6b2k"></wbr>

    Docker初級網絡端口映射的配置_docker

    來源:腳本之家  責任編輯:小易  

    端口映射

    Docker容器啟動之前,如果不進行端口映射,在容器外部是無法通過網絡來訪問容器內的網絡應用和服務。因為容器中常常會運行一些網絡應用和服務,如果想在容器外部通過網絡來訪問容器內的網絡應用和服務,就需要對該容器進行端口映射,可以通過docker run命令中的-P-p選項來進行端口映射。

    隨機端口映射

    當通過docker run命令中的-P選項來進行端口映射時,Docker會隨機映射一個端口到容器開放的網絡端口。

    nginx為例,先拉取nginx的鏡像。

    [root@izoq008ryseuupz ~]# docker image pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    852e50cd189d: Already exists 
    571d7e852307: Pull complete 
    addb10abd9cb: Pull complete 
    d20aa7ccdb77: Pull complete 
    8b03f1e11359: Pull complete 
    Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest
    [root@izoq008ryseuupz ~]# docker images
    REPOSITORY                           TAG         IMAGE ID      CREATED       SIZE
    nginx                             latest       bc9a0695f571    2 days ago     133MB
    

    再以nginx鏡像創建容器nginx.1,使用-P選項來進行隨機的端口映射。

    [root@izoq008ryseuupz ~]# docker run -itd -P --name nginx.1 nginx
    91e3c7ed957f8196fd631eb7bce21acaa96bc253551303ecba2bf193201284ba
    

    通過docker ps -l命令,可以看到本地主機的32775端口被映射到了容器的80端口。此時訪問本地主機的32775端口即可訪問容器內nginx應用提供的界面。

    [root@izoq008ryseuupz ~]# docker ps -l
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
    91e3c7ed957f    nginx        "/docker-entrypoint.…"  17 minutes ago   Up 5 seconds    0.0.0.0:32775->80/tcp  nginx.1
    

    在這里插入圖片描述

    通過docker logs nginx.1命令,可以看到剛剛用瀏覽器訪問容器中nginx應用提供的界面的記錄。

    [root@izoq008ryseuupz ~]# docker logs nginx.1
    ...
    111.8.49.168 - - [27/Nov/2020:09:03:53 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" "-"
    2020/11/27 09:03:53 [error] 21#21: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 111.8.49.168, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "ip:32775", referrer: "http://ip:32775/"
    111.8.49.168 - - [27/Nov/2020:09:03:53 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://ip:32775/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" "-"
    

    指定端口映射

    通過docker run命令中的-p選項來進行指定的端口映射。將本地主機的8083端口映射到容器的80端口。

    [root@izoq008ryseuupz ~]# docker run -itd -p 8083:80 --name nginx.2 nginx
    0e62792a194559bf33c2b39f70b64133cb89a48846278ccee651fda68aa6dad1
    [root@izoq008ryseuupz ~]# docker ps -l
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS         NAMES
    0e62792a1945    nginx        "/docker-entrypoint.…"  6 seconds ago    Up 5 seconds    0.0.0.0:8083->80/tcp  nginx.2
    

    此時訪問本地主機的8083端口即可訪問容器內nginx應用提供的界面。

    在這里插入圖片描述

    通過docker logs nginx.2命令,同樣可以看到剛剛用瀏覽器訪問容器中nginx應用提供的界面的記錄。

    [root@izoq008ryseuupz ~]# docker logs nginx.2
    ...
    111.8.49.168 - - [27/Nov/2020:09:28:32 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" "-"
    2020/11/27 09:28:32 [error] 28#28: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 111.8.49.168, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "ip:8083", referrer: "http://ip:8083/"
    111.8.49.168 - - [27/Nov/2020:09:28:32 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://ip:8083/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" "-"
    

    通過docker ps命令,可以看到之前創建的兩個容器的端口映射都是在本地主機的0.0.0.0上。

    [root@izoq008ryseuupz ~]# docker ps
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
    0e62792a1945    nginx        "/docker-entrypoint.…"  7 minutes ago    Up 7 minutes    0.0.0.0:8083->80/tcp   nginx.2
    91e3c7ed957f    nginx        "/docker-entrypoint.…"  53 minutes ago   Up 36 minutes    0.0.0.0:32775->80/tcp  nginx.1
    

    網上對于0.0.0.0的解釋

    首先,0.0.0.0是不能被ping通的。在服務器中,0.0.0.0并不是一個真實的的IP地址,它表示本機中所有的IPV4地址。監聽0.0.0.0的端口,就是監聽本機中所有IP的端口。

    C:\Users\Kaven>ping 0.0.0.0
    
    正在 Ping 0.0.0.0 具有 32 字節的數據:
    PING:傳輸失敗。常見故障。
    PING:傳輸失敗。常見故障。
    PING:傳輸失敗。常見故障。
    PING:傳輸失敗。常見故障。
    
    0.0.0.0 的 Ping 統計信息:
      數據包: 已發送 = 4,已接收 = 0,丟失 = 4 (100% 丟失),
    

    指定地址的指定端口映射

    可以通過ip:hostPort:containerPort這種格式來進行指定地址的指定端口映射,比如127.0.0.1:8083

    [root@izoq008ryseuupz ~]# docker stop nginx.2
    nginx.2
    [root@izoq008ryseuupz ~]# docker run -itd -p 127.0.0.1:8083:80 --name nginx.3 nginx
    a20b18b97fa4bf7576f6a0d769394a390cfb64ad5fc895453b548bf3f75105ca
    [root@izoq008ryseuupz ~]# docker ps -l
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
    a20b18b97fa4    nginx        "/docker-entrypoint.…"  4 seconds ago    Up 4 seconds    127.0.0.1:8083->80/tcp  nginx.3
    

    通過docker inspect nginx.3命令,也可以看到端口映射信息。

          "Ports": {
            "80/tcp": [
              {
                "HostIp": "127.0.0.1",
                "HostPort": "8083"
              }
            ]
          }
    

    下面這條命令啟動不了容器,因為它會默認使用0.0.0.0,報錯的原因也正是如此 - 地址已在使用中address already in use

    docker run -itd -p 8083:80 --name nginx.4 nginx
    
    [root@izoq008ryseuupz ~]# docker run -itd -p 8083:80 --name nginx.4 nginx
    a5211ec678440044945e4d6f16fe59f3ac10367192262768096e7b748ebd027c
    docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx.4 (809bed1de2bb89f5d54b5b200503701279a153e60dac08b93e13af8c40a02e36): Error starting userland proxy: listen tcp 0.0.0.0:8083: bind: address already in use.
    

    而下面這條命令卻可以啟動容器。

    docker run -itd -p 127.0.0.2:8083:80 --name nginx.5 nginx
    
    [root@izoq008ryseuupz ~]# docker run -itd -p 127.0.0.2:8083:80 --name nginx.5 nginx
    f60dcb586968471e7a8127ccef4cb4e89c4198df748da404f78afaff4afa42de
    

    通過docker ps -a命令,可以看到所有容器的一些信息。

    [root@izoq008ryseuupz ~]# docker ps -a
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS           PORTS          NAMES
    f60dcb586968    nginx        "/docker-entrypoint.…"  19 seconds ago   Up 18 seconds        127.0.0.2:8083->80/tcp  nginx.5
    a5211ec67844    nginx        "/docker-entrypoint.…"  2 minutes ago    Created                       nginx.4
    a20b18b97fa4    nginx        "/docker-entrypoint.…"  7 minutes ago    Up 7 minutes        127.0.0.1:8083->80/tcp  nginx.3
    0e62792a1945    nginx        "/docker-entrypoint.…"  29 minutes ago   Exited (0) 7 minutes ago               nginx.2
    91e3c7ed957f    nginx        "/docker-entrypoint.…"  About an hour ago  Up 58 minutes        0.0.0.0:32775->80/tcp  nginx.1
    

    指定地址的隨機端口映射

    可以通過ip::containerPort這種格式來進行指定地址的隨機端口映射,比如127.0.0.1的隨機端口。

    [root@izoq008ryseuupz ~]# docker run -itd -p 127.0.0.1::80 --name nginx.6 nginx
    396b7d9e64c047187c0391485ba1d275587d86409573e882bc68a9357dfcb6f2
    [root@izoq008ryseuupz ~]# docker ps -l
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS           NAMES
    396b7d9e64c0    nginx        "/docker-entrypoint.…"  9 seconds ago    Up 9 seconds    127.0.0.1:32768->80/tcp  nginx.6
    

    可以看到Docker將127.0.0.132768端口映射到了容器的80端口,而這個32768端口是由Docker隨機指定的。

    多個端口映射

    使用多個-p選項即可進行多個端口映射。

    [root@izoq008ryseuupz ~]# docker run -itd -p 9091:9091 -p 9092:8080 -p 9093:8083 --name nginx.8 nginx
    5ac6438dcc2a2d1b7f668eb10d8285085c396a44f896aae0b3dc09935e4e95eb
    [root@izoq008ryseuupz ~]# docker ps -l
    CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS                                      NAMES
    5ac6438dcc2a    nginx        "/docker-entrypoint.…"  6 seconds ago    Up 4 seconds    80/tcp, 0.0.0.0:9091->9091/tcp, 0.0.0.0:9092->8080/tcp, 0.0.0.0:9093->8083/tcp  nginx.8
    

    查看端口映射配置

    docker port命令可以查看容器的端口映射配置。

    [root@izoq008ryseuupz ~]# docker port nginx.6 80
    127.0.0.1:32768
    [root@izoq008ryseuupz ~]# docker port nginx.5 80
    127.0.0.2:8083
    [root@izoq008ryseuupz ~]# docker port nginx.3
    80/tcp -> 127.0.0.1:8083
    [root@izoq008ryseuupz ~]# docker port nginx.8
    8080/tcp -> 0.0.0.0:9092
    8083/tcp -> 0.0.0.0:9093
    9091/tcp -> 0.0.0.0:9091
    

    Docker容器的端口映射就介紹到這里。

    到此這篇關于Docker初級網絡端口映射的配置的文章就介紹到這了,更多相關Docker 端口映射內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

    您可能感興趣的文章:docker端口映射及外部無法訪問問題Docker端口映射實現網絡訪問的方法docker 啟用多個端口映射命令的操作docker volumes 文件映射方式docker 文件存放路徑, 修改端口映射操作方式運行中的docker容器端口映射如何修改詳解docker設置了端口映射,不能訪問的解決方案

  3. 本文相關:
  4. centos7虛擬機安裝并配置docker套件
  5. docker+gitlab+gitlab-runner部署詳解
  6. docker安裝nginx教程實現圖例講解
  7. 詳解使用阿里云鏡像倉庫構建國外docker鏡像
  8. centos7下安裝docker engine
  9. 利用docker部署nextcloud 網盤的方法步驟
  10. docker實現重新打tag并刪除原tag的鏡像
  11. docker secret的管理和使用詳解
  12. docker搭建nacos1.3.0的實現
  13. 解決docker磁盤空間不足問題
  14. docker 怎么設置端口映射
  15. docker網絡端口映射,沒有方便點的操作方法么
  16. docker鏡像怎么動態增加端口映射
  17. Docker 端口映射問題
  18. 如何查看docker 端口映射
  19. 如何在已經存在的Docker容器上創建端口映射
  20. docker網絡怎么配置/
  21. 現在mac中使用docker怎么添加端口映射
  22. 為什么用docker-compose方式啟動的docker容器找不...
  23. 只查看正在運行的容器和docker主機做了哪些端口映...
  24. 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云計算技術云其它首頁服務器云和虛擬化docker端口映射及外部無法訪問問題docker端口映射實現網絡訪問的方法docker 啟用多個端口映射命令的操作docker volumes 文件映射方式docker 文件存放路徑, 修改端口映射操作方式運行中的docker容器端口映射如何修改詳解docker設置了端口映射,不能訪問的解決方案centos7虛擬機安裝并配置docker套件docker+gitlab+gitlab-runner部署詳解docker安裝nginx教程實現圖例講解詳解使用阿里云鏡像倉庫構建國外docker鏡像centos7下安裝docker engine利用docker部署nextcloud 網盤的方法步驟docker實現重新打tag并刪除原tag的鏡像docker secret的管理和使用詳解docker搭建nacos1.3.0的實現解決docker磁盤空間不足問題docker 給運行中的容器設置端口映docker獲取鏡像報錯docker: errodocker.service啟動失敗:unit ndocker 清理命令集錦淺談docker-compose網絡設置之neubuntu14.04+docker的安裝及使用docker容器如何優雅的終止詳解docker容器訪問宿主機網絡的方法詳解如何使用docker部署一個web項詳解docker國內鏡像拉取和鏡像加使用docker快速搭建spark集群的方法教程docker容器遷移到其他服務器的5種方法詳解解決docker指定udp端口號的問題使用docker快速搭建oracle開發環境的方法linux中docker的安裝教程docker如何限制容器可用的內存如何在mac上用docker對oracle進行部署使用使用docker多階段構建來減小鏡像大小的方centos版本問題安裝docker報錯的解決方案docker私庫harbor的架構與組件說明
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.yu113.com All Rights Reserved
    战天txt全集下载