Docker给运行中的容器添加映射端口
在Docker的使用场景中,有时需要为正在运行的容器添加映射端口,以便外部可以访问容器内的服务。以下为您介绍两种常见的方法:
方法1
1、获得容器IP
使用docker inspect
命令来获取容器的详细信息,从中筛选出IP地址。在实际操作时,需要将container_name
替换为您实际环境中的容器名,具体命令如下:
docker inspect `container_name` | grep IPAddress
2、iptable转发端口
利用iptables
工具进行端口转发设置,实现将容器的指定端口映射到Docker主机的另一个端口。例如,将容器的8000端口映射到Docker主机的8001端口,可使用以下命令:
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
在上述命令中,-t nat
指定了使用nat
表,用于网络地址转换;-A DOCKER
表示在DOCKER
链中添加一条规则;-p tcp
指定协议为TCP
;--dport 8001
表明目标端口是8001;-j DNAT
表示执行目的网络地址转换操作;--to-destination 172.17.0.19:8000
则指定了要转换到的目标地址和端口,即容器的IP地址172.17.0.19和端口8000 。
方法2
1.提交一个运行中的容器为镜像
通过docker commit
命令把正在运行的容器提交为一个新的镜像。其中,containerid
为要提交的容器的ID,foo/live
是自定义的镜像名称和标签,具体命令如下:
docker commit containerid foo/live
2.运行镜像并添加端口
使用docker run
命令来运行新创建的镜像,并通过-p
参数指定端口映射关系。例如,将容器内部的80端口映射到主机的8000端口,命令如下:
docker run -d -p 8000:80 foo/live /bin/bash
在该命令里,-d
表示以守护进程模式在后台运行容器;-p 8000:80
指定了端口映射,即把主机的8000端口映射到容器的80端口;foo/live
是要运行的镜像名称;/bin/bash
是容器启动时执行的命令,这里表示启动一个交互式的bash shell 。
评论