Luc*_* P. 6 port docker rancher
我是 docker 新手,我正在尝试开始永久安装 Rancher。要创建 docker 容器,我运行以下命令:
docker run -d --name rancher-server -p 8080:8080 rancher/server
请注意,我想将容器的 8080 端口转发到我主机的 8080,因为 80 被我主机上的 nginx 占用。
现在,当我停止上述容器并尝试使用它再次启动时,出现docker start <Container ID>以下错误:
Error response from daemon: driver failed programming external connectivity on endpoint rancher-server (c18940f957ed1f737fd5453ea29755adea762d758643a64984d5e3ce8bd3fdbe): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
Error: failed to start containers: c93794a8c0ad
我知道这是因为 nginx 使用端口 80,所以我的问题是如何启动我现有的容器并告诉它转发它的端口?
运行docker start -d -p 8080:8080 c93794a8c0ad给了我以下错误:unknown shorthand flag: 'd' in -d
那么如何启动一个带有转发端口的容器呢?谢谢!
问题可能是两个程序正在同一端口上运行。您可以在运行docker run命令时更改端口设置。例如,您可以将8080容器的端口与计算机上的任意端口绑定,例如8081:
docker run -d --name rancher-server -p 8081:8080 rancher/server
左侧端口号是 docker主机端口(您的计算机),右侧是 docker容器端口。
您可以更改docker 容器的端口而不删除它。quin452 的说法- 稍作修改:
获取容器ID:
docker ps -a
停止容器:
docker stop [container name]
编辑容器hostconfig.json文件,位于
var/lib/docker/containers/[container ID]/hostconfig.json
在该PortBindings部分中,将现有端口编辑HostPort为您想要的端口,或自行添加它们(见下文)
保存并退出配置文件
重新启动码头工人:
sudo systemctl restart docker
启动容器:
docker start [container name]
配置文件示例:
"PortBindings": {
"3306/tcp": [
{
"HostIp": "",
"HostPort": "23306"
}
],
"443/tcp": [
{
"HostIp": "",
"HostPort": "2443"
}
],
"80/tcp": [
{
"HostIp": "",
"HostPort": "280"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我删除了容器,并使用 Rancher 文档推荐的命令创建了一个新容器sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server,现在在正确的端口上按预期停止和启动容器工作。我不知道之前是什么问题,但现在可以了。
| 归档时间: |
|
| 查看次数: |
8004 次 |
| 最近记录: |