欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker初級網(wǎng)絡(luò)端口映射的配置

 更新時間:2021年02月19日 10:45:21   作者:ITKaven  
這篇文章主要介紹了Docker初級網(wǎng)絡(luò)端口映射的配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

端口映射

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

隨機(jī)端口映射

當(dāng)通過docker run命令中的-P選項來進(jìn)行端口映射時,Docker會隨機(jī)映射一個端口到容器開放的網(wǎng)絡(luò)端口。

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鏡像創(chuàng)建容器nginx.1,使用-P選項來進(jìn)行隨機(jī)的端口映射。

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

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

[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應(yīng)用提供的界面的記錄。

[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選項來進(jìn)行指定的端口映射。將本地主機(jī)的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

此時訪問本地主機(jī)的8083端口即可訪問容器內(nèi)nginx應(yīng)用提供的界面。

在這里插入圖片描述

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

[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命令,可以看到之前創(chuàng)建的兩個容器的端口映射都是在本地主機(jī)的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

網(wǎng)上對于0.0.0.0的解釋

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

C:\Users\Kaven>ping 0.0.0.0

正在 Ping 0.0.0.0 具有 32 字節(jié)的數(shù)據(jù):
PING:傳輸失敗。常見故障。
PING:傳輸失敗。常見故障。
PING:傳輸失敗。常見故障。
PING:傳輸失敗。常見故障。

0.0.0.0 的 Ping 統(tǒng)計信息:
  數(shù)據(jù)包: 已發(fā)送 = 4,已接收 = 0,丟失 = 4 (100% 丟失),

指定地址的指定端口映射

可以通過ip:hostPort:containerPort這種格式來進(jìn)行指定地址的指定端口映射,比如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"
          }
        ]
      }

下面這條命令啟動不了容器,因為它會默認(rèn)使用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

指定地址的隨機(jī)端口映射

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

[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隨機(jī)指定的。

多個端口映射

使用多個-p選項即可進(jìn)行多個端口映射。

[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容器的端口映射就介紹到這里。

到此這篇關(guān)于Docker初級網(wǎng)絡(luò)端口映射的配置的文章就介紹到這了,更多相關(guān)Docker 端口映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker安裝Elasticsearch7.6集群并設(shè)置密碼的方法步驟

    docker安裝Elasticsearch7.6集群并設(shè)置密碼的方法步驟

    本文主要介紹了docker安裝Elasticsearch7.6集群并設(shè)置密碼,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù)

    詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù)

    這篇文章主要介紹了詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • docker容器日志查看常用命令及線上日志排查

    docker容器日志查看常用命令及線上日志排查

    這篇文章主要給大家介紹了關(guān)于docker容器日志查看常用命令及線上日志排查的相關(guān)資料, Docker是一種容器化技術(shù),使用它的過程中需要查看Docker的日志輸出來調(diào)試或解決問題,需要的朋友可以參考下
    2024-01-01
  • 詳解如何使用Docker打包Python項目

    詳解如何使用Docker打包Python項目

    Docker是一種開源的容器化平臺,可以將應(yīng)用程序及其依賴項打包到一個輕量級、可移植的容器中,通過使用Docker,可以簡化Python項目的部署和運(yùn)行,提高開發(fā)效率和應(yīng)用程序的可移植性,本文將介紹如何使用Docker來打包Python項目,需要的朋友可以參考下
    2023-11-11
  • docker-compose搭建mongodb、mysql的詳細(xì)過程

    docker-compose搭建mongodb、mysql的詳細(xì)過程

    這篇文章主要介紹了docker-compose搭建mongodb、mysql的詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • 詳解docker-compose速度太慢解決方式

    詳解docker-compose速度太慢解決方式

    這篇文章主要介紹了詳解docker-compose速度太慢解決方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Docker數(shù)據(jù)卷與攔截以及目錄攔截詳解

    Docker數(shù)據(jù)卷與攔截以及目錄攔截詳解

    在Docker中可以使用數(shù)據(jù)卷目錄掛載來將主機(jī)上的目錄與容器內(nèi)的目錄進(jìn)行映射,下面這篇文章主要給大家介紹了關(guān)于Docker數(shù)據(jù)卷與攔截以及目錄攔截的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 使用Docker安裝和配置 MySQL 數(shù)據(jù)庫的過程詳解

    使用Docker安裝和配置 MySQL 數(shù)據(jù)庫的過程詳解

    本文將介紹如何使用Docker來安裝和配置MySQL數(shù)據(jù)庫,以便在開發(fā)和測試環(huán)境中快速搭建MySQL實例,本文也是介紹兩種方式進(jìn)行分別是“使用鏡像安裝”、“使用Docker Compose安裝”,感興趣的朋友一起看看吧
    2023-12-12
  • idea?連接遠(yuǎn)程?docker?并部署項目到?docker的過程

    idea?連接遠(yuǎn)程?docker?并部署項目到?docker的過程

    這篇文章主要介紹了idea連接遠(yuǎn)程docker并部署項目到docker,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • docker update命令動態(tài)更新容器配置

    docker update命令動態(tài)更新容器配置

    Docker的docker update命令提供了一種在不停止容器的情況下動態(tài)調(diào)整其資源配置的能力,從而優(yōu)化性能或滿足特定需求,本文詳細(xì)介紹了docker update命令的使用方法、常用選項如CPU和內(nèi)存限制,感興趣的可以了解一下
    2024-10-10

最新評論