docker-02端口映射
docker 仅在run的时候提供了-p参数来增加端口映射,这无法满足我们后续安装应用的需求,就需要增补端口映射,
特别提醒:为了格式正确,建议在执行run命令的时候,指定一个端口映射,后续增加的时候进行复制黏贴
1)停止docker 容器:
docker stop 容器id/容器名称
2)停止docker
systemctl stop docker
特别注意:一定要停止docker,否则修改了的配置文件会被还原
3)进入目录,修改以下文件:
/var/lib/docker/containers/[容器id]/hostconfig.json
/var/lib/docker/containers/[容器id]/config.v2.json
第一处修改:
hostconfig.json 在根节点下 加入以下配置:
"PortBindings": {
"8080/tcp": [{
"HostIp": "",
"HostPort": "8089"
}]
},
第二处修改:
config.v2.json 在Config节点下的ExposedPorts节点(如果没有可以添加ExposedPorts节点)下添加以下配置:
"8080/tcp": {}
最终Config如下:
"Config": {
"Hostname": "e2040090cf57",
"Domainname": "",
"User": "",
"AttachStdin": true,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": true,
"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],
"Cmd": ["/bin/bash"],
"Image": "centos",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20201204",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
第三处修改:
config.v2.json 在Config节点下的NetworkSettings节点的Ports节点加入以下配置:
"8080/tcp": [{
"HostIp": "0.0.0.0",
"HostPort": "8089"
}]
最终NetworkSettings如下:
"NetworkSettings": {
"Bridge": "",
"SandboxID": "7657e7557a4fc7faec2644e4b6e4dd89aa130b2d292cc79e8c5be11b45315e29",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "afcbb96c4ff2f8fcb46dcfc104d85975bf69aa281e4a8ef77ae08ff02af279a6",
"EndpointID": "ae8c89d80cdfc6ac3c617be9595e723dba9f17464f08cfc6a29ea7b3d828947e",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null,
"IPAMOperational": false
}
},
"Service": null,
"Ports": {
"8080/tcp": [{
"HostIp": "0.0.0.0",
"HostPort": "8089"
}]
},
"SandboxKey": "/var/run/docker/netns/7657e7557a4f",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"IsAnonymousEndpoint": false,
"HasSwarmEndpoint": false
},
5)重启docker
service docker restart
或
systemctl start docker
6)启动容器进行测试