返回顶部
首页 > 资讯 > 精选 >怎么在Docker中配置初级网络端口映射
  • 378
分享到

怎么在Docker中配置初级网络端口映射

2023-06-06 10:06:11 378人浏览 八月长安
摘要

怎么在Docker中配置初级网络端口映射?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。端口映射Docker容器启动之前,如果不进行端口映射,在容器外部是无法通过网络来访问容

怎么在Docker中配置初级网络端口映射?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

端口映射

Docker容器启动之前,如果不进行端口映射,在容器外部是无法通过网络来访问容器内的网络应用和服务。因为容器中常常会运行一些网络应用和服务,如果想在容器外部通过网络来访问容器内的网络应用和服务,就需要对该容器进行端口映射,可以通过docker run命令中的-P-p选项来进行端口映射。

随机端口映射

当通过docker run命令中的-P选项来进行端口映射时,Docker会随机映射一个端口到容器开放的网络端口。

Nginx为例,先拉取nginx的镜像。

[root@izoq008ryseuupz ~]# docker image pull nginxUsing default tag: latestlatest: Pulling from library/nginx852e50cd189d: Already exists 571d7e852307: Pull complete addb10abd9cb: Pull complete d20aa7ccdb77: Pull complete 8b03f1e11359: Pull complete Digest: sha256:6b1daa9462046581ac15be20277a7c75476283f969cb3a61c8725ec38d3b01c3Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest[root@izoq008ryseuupz ~]# docker imagesREPOSITORY                           TAG         IMAGE ID      CREATED       SIZEnginx                             latest       bc9a0695f571    2 days aGo     133MB

再以nginx镜像创建容器nginx.1,使用-P选项来进行随机的端口映射。

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

通过docker ps -l命令,可以看到本地主机的32775端口被映射到了容器的80端口。此时访问本地主机的32775端口即可访问容器内nginx应用提供的界面。

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

怎么在Docker中配置初级网络端口映射

通过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 nginx0e62792a194559bf33c2b39f70b64133cb89a48846278ccee651fda68aa6dad1[root@izoq008ryseuupz ~]# docker ps -lCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS         NAMES0e62792a1945    nginx        "/docker-entrypoint.…"  6 seconds ago    Up 5 seconds    0.0.0.0:8083->80/tcp  nginx.2

此时访问本地主机的8083端口即可访问容器内nginx应用提供的界面。

怎么在Docker中配置初级网络端口映射

通过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 psCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES0e62792a1945    nginx        "/docker-entrypoint.…"  7 minutes ago    Up 7 minutes    0.0.0.0:8083->80/tcp   nginx.291e3c7ed957f    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.2nginx.2[root@izoq008ryseuupz ~]# docker run -itd -p 127.0.0.1:8083:80 --name nginx.3 nginxa20b18b97fa4bf7576f6a0d769394a390cfb64ad5fc895453b548bf3f75105ca[root@izoq008ryseuupz ~]# docker ps -lCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMESa20b18b97fa4    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 nginxa5211ec678440044945e4d6f16fe59f3ac10367192262768096e7b748ebd027cdocker: 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 nginxf60dcb586968471e7a8127ccef4cb4e89c4198df748da404f78afaff4afa42de

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

[root@izoq008ryseuupz ~]# docker ps -aCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS           PORTS          NAMESf60dcb586968    nginx        "/docker-entrypoint.…"  19 seconds ago   Up 18 seconds        127.0.0.2:8083->80/tcp  nginx.5a5211ec67844    nginx        "/docker-entrypoint.…"  2 minutes ago    Created                       nginx.4a20b18b97fa4    nginx        "/docker-entrypoint.…"  7 minutes ago    Up 7 minutes        127.0.0.1:8083->80/tcp  nginx.30e62792a1945    nginx        "/docker-entrypoint.…"  29 minutes ago   Exited (0) 7 minutes ago               nginx.291e3c7ed957f    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 nginx396b7d9e64c047187c0391485ba1d275587d86409573e882bc68a9357dfcb6f2[root@izoq008ryseuupz ~]# docker ps -lCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS           NAMES396b7d9e64c0    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 nginx5ac6438dcc2a2d1b7f668eb10d8285085c396a44f896aae0b3Dc09935e4e95eb[root@izoq008ryseuupz ~]# docker ps -lCONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS                                      NAMES5ac6438dcc2a    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 80127.0.0.1:32768[root@izoq008ryseuupz ~]# docker port nginx.5 80127.0.0.2:8083[root@izoq008ryseuupz ~]# docker port nginx.380/tcp -> 127.0.0.1:8083[root@izoq008ryseuupz ~]# docker port nginx.88080/tcp -> 0.0.0.0:90928083/tcp -> 0.0.0.0:90939091/tcp -> 0.0.0.0:9091

关于怎么在Docker中配置初级网络端口映射问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: 怎么在Docker中配置初级网络端口映射

本文链接: https://lsjlt.com/news/246395.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么在Docker中配置初级网络端口映射
    怎么在Docker中配置初级网络端口映射?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。端口映射Docker容器启动之前,如果不进行端口映射,在容器外部是无法通过网络来访问容...
    99+
    2023-06-06
  • docker端口映射怎么配置
    Docker端口映射用于将容器内的端口映射到宿主机上的端口,从而可以通过宿主机的端口访问容器内的服务。在Docker中,可以通过以下...
    99+
    2023-10-09
    docker
  • nat端口映射怎么配置
    1. 首先,需要在路由器中打开 NAT 功能。2. 然后,在路由器的设置界面中找到“端口映射”或“虚拟服务器”选项,进入该选项。3....
    99+
    2023-06-12
    nat端口映射
  • docker中怎么修改端口映射
    要修改Docker容器的端口映射,可以通过以下两种方式实现: 在运行容器时指定新的端口映射: 可以使用 -p 参数来指定容器的端口...
    99+
    2024-03-06
    docker
  • docker怎么增加端口映射
    要为Docker容器增加端口映射,可以使用`-p`或`--publish`选项来指定要映射的端口。语法如下:```docker ru...
    99+
    2023-09-20
    docker
  • docker怎么添加端口映射
    在Docker中添加端口映射可以通过以下两种方式实现: 使用 -p 参数: 格式:-p host_port:container...
    99+
    2023-10-22
    docker
  • linux静态ip映射端口怎么配置
    要在Linux上配置静态IP映射端口,可以按照以下步骤进行操作: 打开终端,使用root或具有管理员权限的用户登录系统。 编...
    99+
    2023-10-22
    linux
  • docker怎么映射配置文件
    在Docker中映射配置文件的方法有两种: 使用Docker命令行选项 `-v` 或 `--volume` 来进行映射。该选项用...
    99+
    2023-10-27
    docker
  • 怎么修改docker容器端口映射
    要修改Docker容器的端口映射,可以通过以下步骤进行操作:1. 首先停止正在运行的容器。可以使用`docker stop`命令停止...
    99+
    2023-09-20
    docker
  • docker指定端口映射怎么实现
    在Docker中,可以使用`-p`或`--publish`选项来指定端口映射。 语法如下: docker run -p : 例如,...
    99+
    2023-10-25
    docker
  • 电脑内网端口映射怎么设置
    在电脑内网中,端口映射可以让外部网络访问内网中的设备或服务。下面是设置电脑内网端口映射的步骤:1. 确定需要映射的端口号和目标IP地...
    99+
    2023-06-12
    内网端口映射
  • docker 配置 mysql 指定端口映射和存储地址
    要配置Docker中的MySQL容器以指定端口映射和存储地址,可以按照以下步骤进行操作: 从Docker Hub上下载MySQL镜像,可以使用以下命令: docker pull mysql 创建一个新...
    99+
    2023-09-12
    mysql docker 数据库
  • tplink端口映射怎么设置
    以下是TP-Link路由器端口映射设置的步骤:1. 打开浏览器,输入路由器管理地址(通常为192.168.1.1),输入用户名和密码...
    99+
    2023-06-12
    tplink端口映射
  • linux端口映射怎么设置
    Linux端口映射可以通过iptables命令进行设置。具体步骤如下:1. 打开终端,输入以下命令以开启iptables:sudo ...
    99+
    2023-06-10
    linux端口映射 linux
  • Linux系统中如何配置端口映射
    这篇文章将为大家详细讲解有关Linux系统中如何配置端口映射,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前述使用的是 iptables 来做端口映射。如果使用的系统是 Centos/Redhat/Fed...
    99+
    2023-06-28
  • docker设置了端口映射不能访问怎么办
    这篇文章主要介绍了docker设置了端口映射不能访问怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。#docker ps 查看, 所有端口都 做了映射CONTAINER&...
    99+
    2023-06-14
  • docker环境怎么配置hosts映射
    在Docker环境中配置hosts映射,可以通过以下几种方式实现:1. 使用docker run命令时添加--add-host参数:...
    99+
    2023-09-20
    docker
  • 怎么在docker中使用命令启用多个端口映射
    怎么在docker中使用命令启用多个端口映射?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如下: docker run -d -p 5000:23 -p 5001:2...
    99+
    2023-06-14
  • 云服务器怎么映射端口号和网络号的设置
    云服务器可以通过映射端口号和网络号来设置不同的端口和网络配置。以下是一些可能需要在云服务器上实现的映射步骤: 在主页面的“服务器控制台”或“服务器管理”界面中,选择一个云服务器的主机名和端口号,并设置端口映射。 在“客户端控制台”中,选...
    99+
    2023-10-26
    端口号 服务器 网络
  • 云服务器映射端口到外网端口怎么设置
    如果您的云服务器映射到的外网端口是一个动态IP地址,您可以使用以下步骤设置映射端口到外网端口的设置: 打开浏览器,在地址栏中输入“192.168.1.101”,并按回车键。 在弹出的“IP地址和DNS设置”对话框中,选择“使用动态IP地...
    99+
    2023-10-26
    端口 服务器 到外网
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作