docker--创建容器后三种添加端口号的方法

一. 打包容器成为镜像再重新生成容器

二. 修改dokcer容器配置文件

  1. docker的主目录在/var/lib/docker,docker容器的目录在这个目录的containers/中,找到需要修改的容器

  2. 进入需要修改的容器目录找到,config.v2.json和hostconfig.json两个配置文件
    注意:如果要是配置文件修改错误docker会找不到容器,且启动不了,本次测试是先关闭了容器挂载,容器不挂载掉配置文件有有些不一样

docker stop 容器id
# 这里是 config.v2.json文件,我们可以找到如下的内容
# 我们在"Tty"这一项上面的"ExposedPorts"添加内容
# 如果没有做过端口映射,那"ExposedPorts"是空的,直接按照我这个格式改就可以
"ExposedPorts": {
	"22/tcp": {},
	# 这里是我们添加的内容
	"80/tcp": {}
},
"Tty": false,

#这里未启动的的话应是null,用修改
"Ports":null,

# 这个文件还有个位置需要更改
# 在下面有"Ports"一项,这里按照之前的22端口映射的格式,加了一项80的端口映射
# "80/tcp"指的是容器内部的端口,使用tcp协议,里面的"HostPort"指定的外部主机的端口800
"Ports": {
            "22/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "2200"
                },
                {
                    "HostIp": "::",
                    "HostPort": "2200"
                }
            ],
            # 这一项是我添加的内容
            "80/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "800"
                },
                {
                    "HostIp": "::",
                    "HostPort": "800"
                }
            ]
        },

# 这里是 hostconfig.json文件,我们可以找到如下的内容
# 按照之前创建容器时指定的22号端口的映射配置
# 我添加了一项格式相同的配置80端口的映射
# "80/tcp"指的是容器内部的端口,使用tcp协议,里面的"HostPort"指定的外部主机的端口800
"PortBindings": {
        "22/tcp": [
            {
                "HostIp": "",
                "HostPort": "2200"
            }
        ],
        # 这一项是我添加的内容
        "80/tcp": [
            {
                "HostIp": "",
                "HostPort": "800"
            }
        ]
    }

  1. 重启docker和容器
systemctl restart docker
docker ps -a查看之前的docker容器,记录下来CONTAINER ID
docker start [CONTAINER ID]通过你的CONTAINER ID启动docker,也可以使用之前指定的名字,我的是centos-7.2
docker ps -a这时我们看到我们的docker容器已经增加了端口映射

三. 配置防火墙映射(未试用过)

1、获得容器IP
将container_name 换成实际环境中的容器名

docker inspect `container_name` | grep IPAddress

2、iptable转发端口
将宿主机的8888端口映射到IP为192.168.1.15容器的8080端口

iptables -t nat -A  DOCKER -p tcp --dport 8888 -j DNAT --to-destination 192.168.1.15:8080
posted @   starSgz  阅读(4300)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示