首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将端口映射分配给已有的Docker容器?

如何将端口映射分配给已有的Docker容器?
EN

Stack Overflow用户
提问于 2013-10-12 22:46:18
回答 6查看 619.8K关注 0票数 599

我不确定我是否误解了这里的某些内容,但似乎只能通过从镜像创建新的容器来设置端口映射。有没有办法将端口映射分配给现有的Docker容器?

EN

回答 6

Stack Overflow用户

发布于 2013-10-17 10:34:33

如果您所说的“现有”是指“运行”,那么(目前)不可能添加端口映射。

但是,如果您需要在运行的容器中公开服务而不停止/重新启动它,您可以动态添加一个新的网络接口,例如Pipework

票数 57
EN

Stack Overflow用户

发布于 2016-03-24 05:37:04

在Fujimoto Youichi的例子中,test01是一个容器,而test02是一个图像。

在执行docker run之前,您可以删除原始容器,然后再次为容器指定相同的名称:

代码语言:javascript
复制
$ docker stop container01
$ docker commit container01 image01
$ docker rm container01
$ docker run -d -P --name container01 image01

(使用-P将端口暴露给随机端口,而不是手动分配)。

票数 29
EN

Stack Overflow用户

发布于 2018-03-20 04:37:28

如果你运行docker run <NAME>,它会产生一个新的镜像,这很可能不是你想要的。

如果要更改当前图像,请执行以下操作:

docker ps -a

获取目标容器的id并转到:

代码语言:javascript
复制
cd /var/lib/docker/containers/<conainerID><and then some:)>

停止容器:

代码语言:javascript
复制
docker stop <NAME>

更改文件

代码语言:javascript
复制
vi config.v2.json

"Config": {
    ....
    "ExposedPorts": {
        "80/tcp": {},
        "8888/tcp": {}
    },
    ....
},
"NetworkSettings": {
....
"Ports": {
     "80/tcp": [
         {
             "HostIp": "",
             "HostPort": "80"
         }
     ],

和更改文件

代码语言:javascript
复制
vi hostconfig.json

"PortBindings": {
     "80/tcp": [
         {
             "HostIp": "",
             "HostPort": "80"
         }
     ],
     "8888/tcp": [
         {
             "HostIp": "",
             "HostPort": "8888"
         } 
     ]
 }

重新启动您的docker,它应该可以工作。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19335444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档