docker里运行的pi-hole,用了53端口,但启动镜像的时候老是提示端口已被绑定:
Error starting userland proxy: listen tcp4 0.0.0.0:53: bind: address already in use
查看谁用了53端口,发现不止一个进程:
me@ubuntu:/etc/dnsmasq.d# netstat -tlunp|grep 53
tcp 0 0 10.130.231.1:53 0.0.0.0:* LISTEN 3439/dnsmasq
tcp 0 0 192.168.100.1:53 0.0.0.0:* LISTEN 1898/dnsmasq
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 68932/systemd-resol
udp 0 0 127.0.0.53:53 0.0.0.0:* 68932/systemd-resol
udp 0 0 10.130.231.1:53 0.0.0.0:* 3439/dnsmasq
udp 0 0 192.168.100.1:53 0.0.0.0:* 1898/dnsmasq
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1047/avahi-daemon:
udp6 0 0 :::5353 :::* 1047/avahi-daemon:
于是一番网络搜索,发现修改端口步骤:
一:通过修改配置文件修改docker容器端口映射
1.使用docker ps -a命令找到要修改容器的CONTAINER ID
2.运行以下命令,进入该容器目录
docker inspect【CONTAINER ID】| grep Id
cd /var/lib/docker/containers
2.停止容器
docker stop [容器id]
3.停止主机docker服务
systemctl stop docker
4.进入2得到的文件夹内,修改hostconfig.json 和 config.v2.json
vi hostconfig.json
比如新增一个 80 端口,在PortBindings下边添加以下内容,端口配置之间用英文字符逗号隔开
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
]
接着修改vi config.v2.json, 找到ExposedPorts和Ports 仿照之前内容添加端口映射
"ExposedPorts": {
"2000/tcp": {}
},
"Ports":{
"2000/tcp":[
{
"HostIp": "0.0.0.0",
"HostPort": "2000"
}
]
},
5.保存之后重启docker服务和容器
systemctl start docker
docker start [docker id]
此处注意,必须先stop docker, 修改后再start docker,否则修改文件会被恢复。文章来源:https://www.toymoban.com/news/detail-740488.html
但这样也不行,还是提示端口已绑定。突然想到,其实我只需要192.168.0.200:53这个IP+端口, 其它的IP绑定的这个端口我不需要,于是修改hostconfig.json的PortBingding里的HostIp为192.168.0.200,再重启docker,搞定!文章来源地址https://www.toymoban.com/news/detail-740488.html
到了这里,关于docker 修改绑定端口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!