【问题标题】:Could not resolve host: gogs-repo无法解析主机:gogs-repo
【发布时间】:2020-04-27 00:09:16
【问题描述】:

我有一个正在运行的容器:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3825fa57b1ae        repo:0.1.0          "/app/gogs/docker/st…"   29 minutes ago      Up 29 minutes       22/tcp, 3000/tcp    gogs-repo

并尝试将其从另一个容器中卷曲如下:

docker run --rm curlimages/curl:7.69.1 -L -v http://gogs-repo:3000
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Could not resolve host: gogs-repo  

我已经按如下方式启动了gogs-repo 容器:

docker run --rm --name gogs-repo repo:0.1.0
usermod: no changes
Apr 26 10:37:56 syslogd started: BusyBox v1.31.1
2020/04/26 10:37:56 [TRACE] Log mode: File (Info)
Apr 26 10:37:57 sshd[36]: Server listening on :: port 22.
Apr 26 10:37:57 sshd[36]: Server listening on 0.0.0.0 port 22.

如您所见,它已启动并正在运行。为什么 curl 可以到达http://gogs-repo:3000

【问题讨论】:

    标签: docker


    【解决方案1】:

    假设您的服务在容器 gogs-repo 内的 3000 端口上运行(因为我在查看容器日志后不确定),您应该在现有设置中进行以下更改。

    第一件事。两个容器 - gogs-repoanother container(您尝试访问服务的地方)没有相互连接。因此主机gogs-repo 未解析。

    要解决此问题,您需要在单个网络中运行这两个容器。

    您可以执行以下步骤来达到预期的效果。

    • 创建一个私有桥接网络。

      docker network create --driver bridge mynetwork
      
    • 现在启动您的应用程序容器以及添加到您的 docker run 命令中的--network mynetwork

    • 最后,更新后的 docker run 命令如下所示:

      docker run --network mynetwork --rm --name gogs-repo repo:0.1.0
      
      docker run --rm curlimages/curl:7.69.1 -L -v http://gogs-repo:3000
      

    通过以下更改,您可以访问http://gogs-repo:3000

    Good read

    这里还有一种方法 (easy but not recommended) 可以达到预期的效果。

    使用 Docker 链接

    如上所述here

    链接允许容器相互发现并将有关一个容器的信息安全地传输到另一个容器。设置链接时,您会在源容器和接收容器之间创建管道。

    我们可以使用--link 参数链接我们要从中访问服务的容器。

    docker run --link gogs-repo:gogs-repo --rm curlimages/curl:7.69.1 -L -v http://gogs-repo:3000
    

    --link 所做的是它在容器之间创建了一个安全隧道,不需要在容器外部公开任何端口。

    【讨论】:

    • 为什么我需要在gogs-repo上暴露3000端口?
    猜你喜欢
    • 2011-04-30
    • 2017-03-26
    • 2013-02-06
    • 1970-01-01
    • 2015-02-27
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多