Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法连接到Docker服务_Docker_Docker For Mac - Fatal编程技术网

无法连接到Docker服务

无法连接到Docker服务,docker,docker-for-mac,Docker,Docker For Mac,我在MAC机器上运行Docker映像,当我登录到容器时,我看到ip地址为“172.17.0.2”(cat/etc/hosts) docker如何选择IP Docker是否选择任何IP范围 如果我在同一台主机上运行多个容器呢?会有所不同吗 /etc/resolve.conf提供了一些IP地址。IP是什么?它从哪里来 如何使用内部IP连接到Docker服务,如172.17.0.2 ping CONTAINER_ID->返回IP 172.17.0.2 它如何解析主机名 我试着通过网络阅读,但

我在MAC机器上运行Docker映像,当我登录到容器时,我看到ip地址为“172.17.0.2”(cat/etc/hosts)

  • docker如何选择IP

  • Docker是否选择任何IP范围

  • 如果我在同一台主机上运行多个容器呢?会有所不同吗

  • /etc/resolve.conf提供了一些IP地址。IP是什么?它从哪里来

  • 如何使用内部IP连接到Docker服务,如172.17.0.2

  • ping CONTAINER_ID->返回IP 172.17.0.2

    它如何解析主机名

    我试着通过网络阅读,但没用

    此外,我正在8443端口运行我的服务。不过,我还是无法连接

    我试着跑步

    docker运行-网络主机-p 8443:8443映像

    还是不走运

    也尝试了下面的方法

    docker run-p MY_MACHINE_IP:8080:8080图像

    用,

    http://MY_MACHINE_IP:8080

    http://localhost:8080

    以上这些都不起作用

    ifconfig输出

    lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
        inet 127.0.0.1 netmask 0xff000000 
        inet6 ::1 prefixlen 128 
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
        nd6 options=201<PERFORMNUD,DAD>
    gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    stf0: flags=0<> mtu 1280
    XHC20: flags=0<> mtu 0
    en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 60:f8:1d:b2:cb:0c 
        inet6 fe80::49d:a511:dc4e:7960%en0 prefixlen 64 secured scopeid 0x5 
        inet 10.231.168.63 netmask 0xffe00000 broadcast 10.255.255.255
        nd6 options=201<PERFORMNUD,DAD>
        media: autoselect
        status: active
    p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
        ether 02:f8:1d:b2:cb:0c 
        media: autoselect
        status: inactive
    awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
        ether 0a:71:96:61:e4:eb 
        inet6 fe80::871:96ff:fe61:e4eb%awdl0 prefixlen 64 scopeid 0x7 
        nd6 options=201<PERFORMNUD,DAD>
        media: autoselect
        status: active
    en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=60<TSO4,TSO6>
        ether 72:00:07:57:48:30 
        media: autoselect <full-duplex>
        status: inactive
    en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=60<TSO4,TSO6>
        ether 72:00:07:57:48:31 
        media: autoselect <full-duplex>
        status: inactive
    bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        options=63<RXCSUM,TXCSUM,TSO4,TSO6>
        ether 72:00:07:57:48:30 
        Configuration:
            id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
            maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
            root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
            ipfilter disabled flags 0x2
        member: en1 flags=3<LEARNING,DISCOVER>
                ifmaxaddr 0 port 8 priority 0 path cost 0
        member: en2 flags=3<LEARNING,DISCOVER>
                ifmaxaddr 0 port 9 priority 0 path cost 0
        nd6 options=201<PERFORMNUD,DAD>
        media: <unknown type>
        status: inactive
    utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
        inet6 fe80::3f17:8946:c18d:5d25%utun0 prefixlen 64 scopeid 0xb 
        nd6 options=201<PERFORMNUD,DAD>
    utun2: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
        inet6 fe80::20aa:76fd:d68:7fb2%utun2 prefixlen 64 scopeid 0xd 
        nd6 options=201<PERFORMNUD,DAD>
    utun3: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
        inet6 fe80::e42a:c616:4960:2c43%utun3 prefixlen 64 scopeid 0x10 
        nd6 options=201<PERFORMNUD,DAD>
    utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1342
        inet 17...... --> 17.... netmask 0xff000000 
        inet6 fe80::93df:7780:862c:8a06%utun1 prefixlen 64 scopeid 0x12 
        nd6 options=201<PERFORMNUD,DAD>
    
    lo0:flags=8049 mtu 16384
    选项=1203
    inet 127.0.0.1网络掩码0xff000000
    inet6::1预桥128
    inet6 fe80::1%lo0预桥64作用域ID 0x1
    nd6选项=201
    gif0:标志=8010 mtu 1280
    stf0:标志=0 mtu 1280
    XHC20:标志=0 mtu 0
    en0:标志=8863 mtu 1500
    乙醚60:f8:1d:b2:cb:0c
    inet6 fe80::49d:a511:dc4e:7960%en0预桥64安全作用域ID 0x5
    inet 10.231.168.63网络掩码0xffe00000广播10.255.255.255
    nd6选项=201
    媒体:自动选择
    状态:活动
    p2p0:标志=8843 mtu 2304
    乙醚02:f8:1d:b2:cb:0c
    媒体:自动选择
    状态:不活跃
    awdl0:flags=8943 mtu 1484
    乙醚0a:71:96:61:e4:eb
    inet6 fe80::871:96ff:fe61:e4eb%awdl0预桥64作用域ID 0x7
    nd6选项=201
    媒体:自动选择
    状态:活动
    en1:标志=8963 mtu 1500
    选项=60
    乙醚72:00:07:57:48:30
    媒体:自动选择
    状态:不活跃
    en2:标志=8963 mtu 1500
    选项=60
    乙醚72:00:07:57:48:31
    媒体:自动选择
    状态:不活跃
    桥0:flags=8863 mtu 1500
    选项=63
    乙醚72:00:07:57:48:30
    配置:
    id 0:0:0:0:0:0优先级0 hellotime 0 fwddelay 0
    maxage 0 holdcnt 0 proto stp maxaddr 100超时1200
    根id 0:0:0:0:0:0优先级0如果成本0端口0
    ipfilter禁用标志0x2
    成员:en1标志=3
    ifmaxaddr 0端口8优先级0路径成本0
    成员:en2标志=3
    ifmaxaddr 0端口9优先级0路径成本0
    nd6选项=201
    媒体:
    状态:不活跃
    utun0:flags=8051 mtu 2000
    inet6 fe80::3f17:8946:c18d:5d25%utun0预桥64作用域ID 0xb
    nd6选项=201
    utun2:标志=8051 mtu 1380
    inet6 fe80::20aa:76fd:d68:7fb2%utun2预桥64作用域ID 0xd
    nd6选项=201
    utun3:标志=8051 mtu 1380
    inet6 fe80::e42a:c616:4960:2c43%utun3预桥64作用域ID 0x10
    nd6选项=201
    utun1:flags=8051 mtu 1342
    inet 17……-->17.... 网络掩码0xff000000
    inet6 fe80::93df:7780:862c:8a06%utun1预桥64作用域ID 0x12
    nd6选项=201
    
    对于前4个问题,您可以找到一些信息,通常,
    docker网络
    是负责网络的经理

    通常我会这样指定保护程序:

    
    docker run-p 8443:8443图像
    

    而且它起作用了


    对现有主题的引用是

    1。docker如何选择IP

    当docker安装在您的机器上时,它将创建
    docker0
    界面。无论何时启动,它都会为您的容器提供ip地址。 您可以通过
    ifconfig
    命令验证
    docker0
    的ip范围

    2.docker是否可以选择任何IP范围

    是的,请参考我的答案1

    3.如果我在同一台主机上运行多个容器怎么办?会有所不同吗

    是的,在您使用
    docker network create
    创建自己的网络之前,它将不同于
    docker0
    接口的范围。有关更多信息,请参阅:

    4.
    /etc/resolve.conf
    提供了一些IP。IP是什么?它从哪里来

    这是docker网络的内部DNS,您可以在
    vi/etc/systemd/system/docker.service.d/docker.conf
    中为您的DNS ip添加DNS服务器,如下所示:

    [Service]
            ExecStart=
            ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock -g "/opt/docker_storage" --dns <replace-dns-ip>
    
    [服务]
    执行开始=
    ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2376 -Hunix:///var/run/docker.sock -g“/opt/docker_存储”--dns
    
    5.如何使用内部IP连接到docker服务,例如
    172.17.0.2

    您必须公开端口才能进行连接,就像docker run-p 8443:8443 之后,您可以通过
    telnet localhost 8443
    curl进行连接http://172.17.0.2:8443

    最重要的

    将以下内容添加到
    /etc/sysctl.conf

    net.ipv4.ip_forward=1
    并通过应用设置

    sysctl-p/etc/sysctl.conf

    希望这会有所帮助


    谢谢大家!

    Docker自己管理所有这些内部网络机器。这包括从专用范围分配IP(v4)地址、为出站连接设置NAT以及允许容器相互通信的DNS服务

    稳定、合理的设置是:

    • 运行一次
      docker network create mynet
      ,以创建非默认网络。(Docker Compose将自动为您执行此操作。)
    • 使用
      --net mynet
      运行容器
    • 当容器需要相互通信时,它们可以使用其他容器的
      --name
      作为DNS名称(您可以连接到
      http://other-container-name
    • 如果需要从其他地方访问容器,请使用
      docker run-p
      或docker Compose