一般在运行容器时,都会通过-p来指定宿主机和容器端口的映射,例如:

docker run -itd -p 本地端口:容器内端口 所用镜像名
参数说明
-d 表示后台运行容器
-t 为docker分配一个伪终端并绑定到容器的标准输入上
-i 是让容器的标准输入保持打开状态
-p 指定映射端口

即创建容器时,可以设置一个端口来进行宿主机和容器之间端口的映射,比如外边的8080与容器内的22进行映射后,那你可以使用 宿主机IP:8080 在xshell进行连接容器了

方式一

直接给容器停了,然后把这个容器打包成镜像,然后使用这个镜像重新开启新的容器,开启的时候加上新添加的端口,将现有的容器打包成镜像,然后在使用新的镜像运行容器是重新指定要映射的端口。

实操如下:

停止容器
docker stop 容器名字或者编号
将容器打包成镜像
docker commit 容器名字或者编号  你想起的镜像名字
用新镜像开启新容器
docker run -itd --name 你起的容器名 -p 外边的端口:容器内端口 -p 外边的端口:容器内的端口... 刚才的镜像名

方式二 

修改容器的配置文件

若该容器还在运行,先停掉
docker stop 容器ID
停掉docker服务
systemctl stop docker
查看容器信息:
docker ps -a
查看容器的端口映射情况,在容器外执行:
docker port 容器ID或者容器名称
查找要修改容器的容器Id(当然你也可以直接通过docker ps -a查看)
docker inspect 容器Id | grep Id
进到/var/lib/docker/containers 目录下找到与 Id 相同的目录,修改 hostconfig.json 和 config.v2.json文件:
cd /var/lib/docker/containers/容器Id
vim hostconfig.json
外部端口是10000,容器内部端口是50070
"50070/tcp": [{"HostIp": "","HostPort": "10000"}]


重新启动docker
systemctl start docker

查看端口是否绑定成功
docker ps -a

当然你也可以用这个命令来查看宿主机和容器之间的端口是否映射成功
netstat -an | grep 宿主机的映射端口
如果有进程存在则表示有映射