Docker给运行中的容器添加映射端口

jonathan
2016-10-10 / 0 评论

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 。

评论

博主关闭了当前页面的评论