AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 817339
Accepted
WoJ
WoJ
Asked: 2016-11-28 10:10:45 +0800 CST2016-11-28 10:10:45 +0800 CST 2016-11-28 10:10:45 +0800 CST

什么使用 docker 容器端口?

  • 772

在设置我的第一个docker环境时,我创建了一个特定的网络:

root@srv /e/docker# docker network inspect docker
[
    {
        "Name": "docker",
        "Id": "7b20560b36032d36ffe6c0ebece6b4408355d207f4e203a2957b0434ee0afdc1",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "10.200.0.0/24"
                }
            ]
        },
        "Internal": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

我从一个具有特定 IP 的网络的图像创建了一个容器:

root@srv /e/docker# docker create --network docker --ip 10.200.0.2 --hostname dev -p 22:22 --name dev base
807f3892241d314d20837c4c749912097e1f34c62884401acd9a06e201cb5876

然后我启动了这个容器并得到:

root@srv /e/docker# docker start dev
Error response from daemon: driver failed programming external connectivity on endpoint dev (807f3892241d314d20837c4c749912097e1f34c62884401acd9a06e201cb5876): Error starting userland proxy: listen tcp 0.0.0.0:22: bind: address already in use
Error: failed to start containers: dev

实际上,它已经supervisord开始sshd -D默认绑定到该主机的所有可用 IP 地址。由于它的 IP 是10.200.0.2,我希望sshd绑定到它的127.0.0.1和10.200.0.2. 看起来这个端口被什么东西占用了,但是什么?

主机确实有一个sshd运行,但这对于来宾容器来说应该没关系,对吧?(因为它生活在自己的世界中,只知道上面的两个 IP)?

评论后编辑:换句话说,我想sshd绑定到容器的 IP(它看到的那个 = 10.200.0.2),并让这个端口暴露在容器外部,在同一个 IP 上。或者,实际上,我希望能够从主机ssh [email protected]到达并到达sshd容器。

networking network-share docker
  • 3 3 个回答
  • 622 Views

3 个回答

  • Voted
  1. Best Answer
    Jacob Evans
    2016-11-28T11:40:47+08:002016-11-28T11:40:47+08:00

    如果要在本地连接,请不要发布端口。

    /e/docker# docker create --network docker --ip 10.200.0.2 --hostname dev --name dev base

    您想公开端口。 https://docs.docker.com/engine/reference/builder/

    测试/DockerFile

    FROM base
    EXPOSE 22
    

    docker build -t test -f test/DockerFile test/DockerFile

    • 2
  2. Anton Evangelatov
    2016-11-28T10:25:00+08:002016-11-28T10:25:00+08:00

    尝试修改-p publish参数以绑定到特定 IP,例如-p 10.200.0.2:22:22. 如果我没记错的话,默认情况下,docker 会将暴露的端口发布到 0.0.0.0。正如您所提到的,您已经在主机网络上使用了端口 22。

    • 0
  3. Florin Asăvoaie
    2016-11-28T11:32:54+08:002016-11-28T11:32:54+08:00

    因此,-p标志在主机上发布端口。只需排除标签以仅在容器网络上使用它。

    • 0

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve