我不确定我是否误解了这里的某些内容,但似乎只能通过从镜像创建新的容器来设置端口映射。有没有办法将端口映射分配给现有的Docker容器?
发布于 2013-10-17 10:34:33
如果您所说的“现有”是指“运行”,那么(目前)不可能添加端口映射。
但是,如果您需要在运行的容器中公开服务而不停止/重新启动它,您可以动态添加一个新的网络接口,例如Pipework。
发布于 2016-03-24 05:37:04
在Fujimoto Youichi的例子中,test01
是一个容器,而test02
是一个图像。
在执行docker run
之前,您可以删除原始容器,然后再次为容器指定相同的名称:
$ docker stop container01
$ docker commit container01 image01
$ docker rm container01
$ docker run -d -P --name container01 image01
(使用-P
将端口暴露给随机端口,而不是手动分配)。
发布于 2018-03-20 04:37:28
如果你运行docker run <NAME>
,它会产生一个新的镜像,这很可能不是你想要的。
如果要更改当前图像,请执行以下操作:
docker ps -a
获取目标容器的id并转到:
cd /var/lib/docker/containers/<conainerID><and then some:)>
停止容器:
docker stop <NAME>
更改文件
vi config.v2.json
"Config": {
....
"ExposedPorts": {
"80/tcp": {},
"8888/tcp": {}
},
....
},
"NetworkSettings": {
....
"Ports": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
和更改文件
vi hostconfig.json
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
"8888/tcp": [
{
"HostIp": "",
"HostPort": "8888"
}
]
}
重新启动您的docker,它应该可以工作。
https://stackoverflow.com/questions/19335444
复制相似问题