docker--创建容器后三种添加端口号的方法
一. 打包容器成为镜像再重新生成容器
二. 修改dokcer容器配置文件
-
docker的主目录在/var/lib/docker,docker容器的目录在这个目录的containers/中,找到需要修改的容器
-
进入需要修改的容器目录找到,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"
}
]
}
- 重启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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示