为docker添加端口映射
创建docker时添加端口
通过-p porta:portb添加端口映射。
比如我在虚拟机里输入docker run [镜像名] -p porta:portb,当访问虚拟机的porta端口时,请求会被转发到docker内的portb。
为已创建的docker添加端口
通过commit添加端口
这种方法其实就是通过commit创建新镜像,然后就和上面一样了。
具体流程:
- 将已存在的容器commit,创建新镜像;
- run新的镜像时通过-p添加端口映射。
通过修改文件添加端口
每个docker都有一个自己对应的文件夹,用于保存容器信息。容器内有一些配置文件,可以通过修改配置文件达到添加端口映射的效果。
具体流程:
- 查看容器对应的ID,可以通过docker ps或者docker inspect [容器名] | grep Id查找容器对应的ID。
- 停止容器(docker stop [容器名])和docker服务(systemctl stop docker或service docker stop)
- 进入**/var/lib/docker/containers/[容器对应ID]**(docker默认安装位置)文件夹,修改以下两个文件(以8080为例,后面会给修改后的结果):
- hostconfig.json:在PortBindings下添加**“8080/tcp”:[{“HostIp”:"",“HostPort”:“8080”}]**
- config.v2.json:在ExposedPorts下添加**“8080/tcp”:{}**
添加后在使用docker inspect查看信息时应该可以看到
...
"HostConfig": {
...
"PortBindings": {
...
"8080/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
]
}
...
...
}
...
"Config": {
...
"ExposedPorts": {
...
"8080/tcp": {}
...
}
...
- 启动docker服务(systemctl start docker或service docker start),启动容器(docker start [容器名])
- docker ps,发现对应的容器的PORTS处多了8080端口,完事