【问题标题】:How can i view my dockerized container app that i just set up on Azure?如何查看我刚刚在 Azure 上设置的 dockerized 容器应用程序?
【发布时间】:2017-07-03 10:18:12
【问题描述】:

我似乎在这里遗漏了一些东西。

所以我在 Azure 上设置了一个免费帐户。使用他们的教程作为参考,我设法设置了公钥/私钥,并通过 ssh 连接到服务器。 (这是在门户上创建容器资源后完成的)。进入该服务器后,我成功运行了以下命令:

docker run -d -p 80:80 dallascaley/get-started:part1

我还可以使用 docker ps 命令验证它是否正在运行。我也知道这在我的本地系统上运行良好,所以我觉得我非常接近让我的第一个容器化 docker 应用程序启动并运行,但我似乎无法弄清楚我需要去哪个地址查看实时应用程序。

根据一篇关于堆栈溢出的帖子,它应该是资源上列出的以“swarm-master-ip-”开头的 DNS 名称,但这不起作用,列出的 IP 地址也没有。我查看了资源列表中的每条记录,并尝试了所有 DNS 和 IP 地址(其中大部分是重复的),但它们似乎都不起作用。

有什么建议吗?

【问题讨论】:

    标签: azure docker


    【解决方案1】:

    你在master上创建容器的根本原因,我们应该在swarm agent上创建容器。默认情况下,我们不能在 swarm master 上创建容器。

    一旦我们满足于 swarm master 并运行docker info,信息如下:

    root@swarm-master-784816DA-0:~# docker info
    Containers: 2
     Running: 2
     Paused: 0
     Stopped: 0
    Images: 2
    Server Version: 17.06.0-ce
    Storage Driver: overlay
     Backing Filesystem: extfs
     Supports d_type: true
    Logging Driver: json-file
    Cgroup Driver: cgroupfs
    Plugins: 
     Volume: local
     Network: bridge host macvlan null overlay
     Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
    Swarm: inactive
    Runtimes: runc
    Default Runtime: runc
    Init Binary: docker-init
    containerd version: cfb82a876ecc11b5ca0977d1733adbe58599088a
    runc version: 2d41c047c83e09a6d61d464906feb2a2f3c52aa4
    init version: 949e6fa
    Security Options:
     apparmor
    Kernel Version: 3.19.0-65-generic
    Operating System: Ubuntu 14.04.4 LTS
    OSType: linux
    Architecture: x86_64
    CPUs: 2
    Total Memory: 6.805GiB
    Name: swarm-master-784816DA-0
    ID: IKDF:RSRH:CXT2:M6ER:KI4R:DYAR:2CZH:FFQX:MCRT:4NZB:CBS4:LNRK
    Docker Root Dir: /var/lib/docker
    Debug Mode (client): false
    Debug Mode (server): false
    Registry: https://index.docker.io/v1/
    Experimental: false
    Insecure Registries:
     127.0.0.0/8
    Live Restore Enabled: false
    
    WARNING: No swap limit support
    

    然后我们访问 docker swarm 集群将 DOCKER_HOST 环境变量设置为您为隧道配置的本地端口,使用此命令 export DOCKER_HOST=:2375docker info

    root@swarm-master-784816DA-0:~# export DOCKER_HOST=:2375
    root@swarm-master-784816DA-0:~# docker info
    Containers: 0
     Running: 0
     Paused: 0
     Stopped: 0
    Images: 0
    Role: primary
    Strategy: spread
    Filters: health, port, dependency, affinity, constraint
    Nodes: 1
     swarm-agent-784816DA000001: 10.0.0.5:2375
      └ Status: Healthy
      └ Containers: 0
      └ Reserved CPUs: 0 / 2
      └ Reserved Memory: 0 B / 7.145 GiB
      └ Labels: executiondriver=<not supported>, kernelversion=3.19.0-65-generic, operatingsystem=Ubuntu 14.04.4 LTS, storagedriver=overlay
      └ Error: (none)
      └ UpdatedAt: 2017-07-03T01:57:18Z
    Plugins: 
     Volume: 
     Network: 
     Log: 
    Swarm: 
     NodeID: 
     Is Manager: false
     Node Address: 
    Kernel Version: 3.19.0-65-generic
    Operating System: linux
    Architecture: amd64
    CPUs: 2
    Total Memory: 7.145GiB
    Name: 2076070ddfd8
    Docker Root Dir: 
    Debug Mode (client): false
    Debug Mode (server): false
    Experimental: false
    Live Restore Enabled: false
    
    WARNING: No kernel memory limit support
    

    然后我们运行docker ps来获取信息:

    root@swarm-master-784816DA-0:~# docker run -d -p 80:80 yeasy/simple-web
    0226e9ab3cadf20701f64c02f1f4a42f5fd57fd297722f268db47db1b124ab5c
    root@swarm-master-784816DA-0:~# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
    0226e9ab3cad        yeasy/simple-web    "/bin/sh -c 'pytho..."   6 seconds ago       Up 5 seconds        10.0.0.5:80->80/tcp   swarm-agent-784816DA000001/stupefied_snyder
    

    那么我们就可以使用swarm-agent-lb负载均衡器的公共IP地址DNS来访问网站了。

    更多关于设置环境的信息,请参考link

    【讨论】:

    • 它对你有用吗?如果您需要进一步的帮助,请告诉我。
    • 只是检查提供的信息是否有用。如果您需要进一步的帮助,请告诉我。
    • 我在哪里可以找到“您为隧道配置的本地端口”我不记得在任何地方配置过这个?
    • 好的,忘记我的最后评论,我让它工作了。我完全按照您所说的使用端口 2375,因为那是群端口并使用负载平衡器 IP。我不完全理解它,但它的工作原理非常感谢。
    【解决方案2】:

    我不了解 Azure 和 Azure 容器服务,因此我试图根据我从文档中收集到的信息来回答这个问题。

    既然你提到了swarm-master-ip,我假设你在容器服务中启动了一个 Swarm 集群。 https://docs.microsoft.com/en-us/azure/container-service/container-service-docker-swarm 的文档表明,为 Swarm 代理节点自动设置了一个 Azure 负载均衡器,它将请求路由到应用程序:

    您现在可以通过 Swarm 代理负载平衡器的公共 DNS 名称访问在此容器中运行的应用程序。您可以在 Azure 门户中找到此信息。

    如果 Azure 容器服务门户中没有任何位置,则 Azure 服务中的某个位置应该是对 Azure Load Balancer 的管理,并为其列出公共 DNS。

    【讨论】:

      【解决方案3】:

      docker 容器绑定到主机的 80 端口。因此,您应该能够从主机访问该正在运行的实例 curl localhost 并获得肯定的响应。 如果可行,那么假设这个 azure 实例有一个公共 IP(绑定到公共的网络接口),您可以使用 ifconfig 获取您的 IP 地址,并且您可以从世界任何地方通过 http://12.34.56.78 访问您的服务器(无论您的外部接口IP地址是)

      【讨论】:

        猜你喜欢
        • 2016-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-09
        • 2016-04-20
        • 1970-01-01
        相关资源
        最近更新 更多