为什么使用docker run和docker ps时IP和端口号会发生变化?

为什么使用docker run和docker ps时IP和端口号会发生变化?,docker,docker-desktop,Docker,Docker Desktop,我正在尝试使用以下命令从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 \ cs

我正在尝试使用以下命令从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 cstringer/mycontainer”/bin/sh-c'/ark-de..“2秒前上升1秒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

我目前正在Windows10家用计算机上使用WSL2和DebianLinux运行Docker Desktop。192.168.0.19是我的主机系统的IP地址

我的问题是:

  • 为什么Docker将分配的IP地址更改为环回地址
  • 为什么Docker分配随机端口号

为了让事情变得更奇怪,我实际上可以毫无问题地连接到运行容器中的服务。另外,我第一次创建容器时没有遇到这个问题。我昨晚创建了它,并在晚上结束前停止了容器。然后今天在使用
docker start mycontainer启动容器后,它就这样做了。然后,我删除了容器,并使用前面的命令重新创建了它。从那时起,我一直无法将其正确显示。

我不理解编辑问题的逻辑。我没有这样输入命令…为什么要编辑它?我不是编辑器,但编辑是典型的重新格式化。人的可读性比您的实际命令要好得多,并且所有相关参数都保留了下来。提高可读性可以让有经验的用户更容易回答您的问题。我想这是一个哲学上的争论,但我更希望命令的原始文本与方便性。我不理解我的问题的编辑逻辑。我没有这样输入命令…为什么要编辑它?我不是编辑器,但编辑是典型的重新格式化。人的可读性比您的实际命令要好得多,并且所有相关参数都保留了下来。提高可读性可以让有经验的用户更容易回答您的问题。我想这是一个哲学上的争论,但我更希望命令的原始文本与方便性。