docker容器端口格式看起来不正确(如<端口> – <端口>)

我正在申请docker

docker commit ,我命令docker ps -a它显示以下格式的端口

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe593ddcd74f test-container:0.1 "/usr/sbin/init" 3 minutes ago Up 2 minutes 9800-9801/tcp, 9809/tcp elegant_wozniak 

为了清楚我的观点, 9800-9801/tcp, 9809/tcp部分看起来很奇怪。 根据我的经验,它应该像9800/tcp, 9801/tcp, 9809/tcp

我该如何解决这个问题? (或者至less,更改图像的-p选项?)谢谢。

仅供参考,我已search/var/lib/docker/containers/[containerID]文件夹,但似乎没有错。 跟着是grep 9800结果

 {"StreamConfig":{},"State":{"Running":true,"Paused":false,"Restarting":false,"OOMKilled":false,"RemovalInProgress":false,"Dead":false,"Pid":237602,"ExitCode":0,"Error":"","StartedAt":"2017-04-26T04:52:09.543683449Z","FinishedAt":"0001-01-01T00:00:00Z","Health":null},"ID":"fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a","Created":"2017-04-26T04:52:07.968623795Z","Managed":false,"Path":"/usr/sbin/init","Args":[],"Config":{"Hostname":"fe593ddcd74f","Domainname":"","User":"","AttachStdin":false,"AttachStdout":true,"AttachStderr":true,"ExposedPorts":{"9800/tcp":{},"9801/tcp":{},"9809/tcp":{}},"Tty":false,"OpenStdin":false,"StdinOnce":false,"Env":["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","JAVA_HOME=/etc/alternatives/java_sdk_1.8.0"],"Cmd":["/usr/sbin/init"],"ArgsEscaped":true,"Image":"test-container:0.1","Volumes":null,"WorkingDir":"","Entrypoint":null,"OnBuild":null,"Labels":{"build-date":"20170406","license":"GPLv2","name":"CentOS Base Image","vendor":"CentOS"}},"Image":"sha256:9961609c375cbf4db292f34b4beab2db26e968f9cecec149049849cd9758ea9a","NetworkSettings":{"Bridge":"","SandboxID":"6ded0e0aaa4efdf7a094fd02329cd51f44bafdc5700b31453b490a38b3ee4c61","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null,"NetworkID":"ca0bdc7bd4c80b9f31e722f2818072ef7710e8989b11f89fb4e39491511af0f1","EndpointID":"d273747e15b5648bda1728e8b9b57dbdb9a05aa3fa96a559d70e483432f7d455","Gateway":"172.17.0.1","IPAddress":"172.17.0.10","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:0a","IPAMOperational":false}},"Service":null,"Ports":{"9800/tcp":null,"9801/tcp":null,"9809/tcp":null},"SandboxKey":"/var/run/docker/netns/6ded0e0aaa4e","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"IsAnonymousEndpoint":true,"HasSwarmEndpoint":false},"LogPath":"/var/lib/docker/containers/fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a/fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a-json.log","Name":"/elegant_wozniak","Driver":"devicemapper","MountLabel":"","ProcessLabel":"","RestartCount":0,"HasBeenStartedBefore":true,"HasBeenManuallyStopped":false,"MountPoints":{},"SecretReferences":null,"AppArmorProfile":"","HostnamePath":"/var/lib/docker/containers/fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a/hostname","HostsPath":"/var/lib/docker/containers/fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a/hosts","ShmPath":"/var/lib/docker/containers/fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a/shm","ResolvConfPath":"/var/lib/docker/containers/fe593ddcd74f53707af8341151c5be471145d5c6f72a2a06731e9c297beb490a/resolv.conf","SeccompProfile":"","NoNewPrivileges":false} 

正如docker ps命令文档的这一部分所述:

 'docker ps groups exposed ports into a single range if possible. Eg, a container that exposes TCP ports 100, 101, 102 displays 100-102/tcp in the PORTS column.' 

无论如何,我发布的原因是当我从外部访问9800端口。 浏览器说connection refused 。 更改显示像9800-9801之前,它的工作原理。

这就是我绕过这个问题的方式。

  1. docker commit <current_container_name> <new_image_name>
  2. docker run -p 9800:9800 --name=<name you want> <new_image_name>
  3. 现在你可以看到类似于0.0.0.0:9800->9800/tcp, 9801/tcp, 9809/tcp (不完全是因为我现在重新安装了docker)