问题描述
docker上面运行容器,run -p 的时候只映射了一个端口,后面对该nginx做扩展,需要开放其他端口。当然重新再启一个容器在docker启动参数里多配置几个-p端口映射是能解决的,但是如果自己不想重新启一个容器,试试下面两种方式
解决方法
方法一:
1.获取容器ip
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器id
2.利用iptable转发,将容器的端口80映射到docker主机的端口8081
iptables -t nat -A DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:80
方法二:
1.docker ps命令找到容器的id
2.将该容器设为自启动
docker update 容器id --restart=always
3.用命令docker inspect 6fe599270a48 | grep HostsPath找到nginx容器端口配置文件地址
[root@VM-0-6-centos 123]# docker inspect 6fe599270a48 | grep HostsPath
"HostsPath": "/var/lib/docker/containers/6fe599270a482e0bf6b3c9a38a8d6212f6f5339e65b7bf32834ab9a5c6e81f9f/hosts",
4.进入配置文件路径
5.关闭docker容器
systemctl stop docker
注意:如果出现Warning: Stopping docker.service, but it can still be activated by:
docker.socket这样的错误,需要再执行一下systemctl stop docker.socket
6.修改hostconfig.json配置文件
vim hostconfig.json
添加我们需要的端口映射:文章来源:https://www.toymoban.com/news/detail-784101.html
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "8081"
}
],
"8000/tcp": [
{
"HostIp": "",
"HostPort": "8000"
}
],
"9000/tcp": [
{
"HostIp": "",
"HostPort": "9000"
}
]
}
7.修改config.v2.json配置文件
同路径下打开config.v2.json,修改:ExposedPorts和
Ports文章来源地址https://www.toymoban.com/news/detail-784101.html
"ExposedPorts": {
"80/tcp": {},
"8000/tcp": {},
"9000/tcp": {}
}
"Ports": {
"80/tcp": [{
"HostIp": "0.0.0.0",
"HostPort": "80"
}],
"8000/tcp": [{
"HostIp": "0.0.0.0",
"HostPort": "8000"
}],
"9000/tcp": [{
"HostIp": "0.0.0.0",
"HostPort": "9000"
}]
}
8.重启docker容器
systemctl start docker
到了这里,关于docker给运行中的容器添加端口映射的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!