docker - 为什么使用 docker run 与 docker ps 时 IP 和端口号会发生变化?
问题描述
我正在尝试使用以下命令从 docker 映像启动 docker 容器:
docker run -d \
--name mycontainer \
--network my-net \
-p 192.168.0.19:7777:7777/tcp \
-p 192.168.0.19:7777:7777/udp \
-p 192.168.0.19:27015:27015/tcp \
-p 192.168.0.19:27015:27015/udp \
cspringer/myimage
容器启动正常,但是当我docker ps
用来列出正在运行的容器时,我看到以下输出:
aa3deb723745 cspringer/mycontainer "/bin/sh -c '/ark-de…" 2 seconds ago Up 1 second 127.0.0.1:32769->7777/tcp, 127.0.0.1:32769->7777/udp, 127.0.0.1:32768->27015/tcp, 127.0.0.1:32768->27015/udp mycontainer
我目前正在使用 WSL2 和 Debian Linux 在 Windows 10 Home 机器上运行 Docker Desktop。192.168.0.19 是我的主机系统的 IP 地址。
我的问题是:
- 为什么 Docker 将分配的 IP 地址更改为环回地址?
- 为什么 Docker 分配随机端口号?
为了让事情变得更奇怪,我实际上可以毫无问题地连接到正在运行的容器中的服务。此外,我第一次创建容器时没有遇到这个问题。我昨晚创建了它,并在晚上结束前停止了容器。然后今天在使用docker start mycontainer
它启动容器后这样做了。然后我删除了容器并使用前面的命令重新创建了它。从那时起,我一直无法让它正确显示。
解决方案
推荐阅读
- c++ - 数组大小由虚函数结果决定
- r - 无法在 Rstudio 上安装任何软件包
- bash - 我需要帮助制作一个脚本来将 http 视频链接从 m3u 拉到与视频文件同名的 .strm 文件中
- java - 没有 e(fx)clipse - IDE 安装选项
- python - 如何从 QCalendarWidget 对象获取日期并将其设置为最小日期?
- sql - 使用 case 语句检查 SQL 表中是否存在记录
- c# - InvalidDataException:超过多部分正文长度限制 16384
- python - API 网关主体映射移动?
- jestjs - toEqual 的变体,它使用类属性的方式与使用类方法的方式相同
- php - 当别名域是请求的资源时捕获请求的 URL