精华内容
下载资源
问答
  • Question Docker内需要访问本机的数据库,如何访问。使用127.0.0.1肯定是不行的,因为这个在Docker容器里面指的是容器本身。...(may not use) docker run --add-host dockerhost:`/sbin/ip route|awk '/def
  • docker容器获取宿主机ip地址

    千次阅读 2020-03-02 14:25:50
    通过虚拟网桥ip用ssh链接宿主机,执行docker info命令对docker宿主机ip进行获取。 前提需要: 1.root密码, 2.服务器的docker虚拟网桥(172.17.0.1)未更改,否则也需要配置ip。 即ssh链接所需要的ip...
    import paramiko
    s = paramiko.SSHClient()
    s.load_system_host_keys()
    # 密码列表
    list1 = ['521999']
    for password in list1:
        try:
            s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            # 链接宿主机,172.17.0.1为docker虚拟网桥地址,默认为172.17.0.1,可更改
            s.connect("172.17.0.1",22,"root",password,timeout=5)
            stdin,stdout,stderr = s.exec_command("docker info | grep 'Node Address' | awk '{print $NF}'")
            ip = stdout.read().decode("utf-8")
            if ip:
                while True:
                  print(ip)
        except:
            pass

    通过虚拟网桥ip用ssh链接宿主机,执行docker info命令对docker宿主机ip进行获取。

    前提需要:

    1.root密码,

    2.服务器的docker虚拟网桥(172.17.0.1)未更改,否则也需要配置ip。

    即ssh链接所需要的ip(虚拟网桥172.17.0.1),用户名(root),密码

    展开全文
  • 1,在docker容器内执行以下python代码或根据需要插入到你的.py文件中: import paramiko #通过pip3 install paramiko 安装 s = paramiko.SSHClient() s.load_system_host_keys() s.set_missing_host_key_policy...

    1,在docker容器内执行以下python代码或根据需要插入到你的.py文件中:

    import paramiko #通过pip3 install paramiko 安装
    s = paramiko.SSHClient()
    s.load_system_host_keys()
    s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    s.connect(hostname="A",port=22,username="B",password="C") #A为容器虚拟网桥的IP地址,默认为172.17.0.1,B为容器的用户名,C是密码
    stdin,stdout,stderr = s.exec_command("python3 /home/aiot/test_ip.py") #/home/aiot/test_ip.py是我宿主机下获取ip的脚本
    ip = stdout.read()
    

    test_ip.py脚本内容为:

    import socket
    """get localhost ip address"""
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.connect(('8.8.8.8', 80))
    ip = s.getsockname()[0]
    print(ip)
    

    可能遇到的问题以及解决办法:
    1,报错"paramiko.ssh_exception.NoValidConnectionsError: [Errno None] Unable to connect to port 22 on 172.17.0.4"

    在这里插入图片描述
    主要原因是因为宿主机和docker容器的SSH端口22没有打开,请确保宿主机和docker容器内都启动了SSH服务并且22端口都已经开放。具体请参考这篇博客

    2,报错"paramiko.ssh_exception.AuthenticationException: Authentication failed."

    在这里插入图片描述
    遇到这个问题首先请确保你的hostname、username、password都正确。再去到容器内/etc/ssh/sshd_config处看看配置文件中将

    PermitRootLogin prohibit-password
    

    改为

    PermitRootLogin yes
    

    如图:

    在这里插入图片描述
    如果解决完这一步还是报相同的错,则可以在容器内新建一个普通用户再去执行代码,应该可以解决了。

    Done!

    展开全文
  • 通过 ifconfig 是找不到 ip 的,然后 需要找到一个宿主机ip 可以通过 域名 来访问: 查询docker 版本命令: docker --version Docker for Mac v 17.12 以上版本 直接使用: docker.for.mac.host.internal Docker ...

    1、有网络的情况下:
    通过 ifconfig 中找到自己的电脑 ip 然后直接访问即可

    2、没有网络的情况下:
    通过 ifconfig 是找不到 ip 的,然后 需要找到一个宿主机的ip

    可以通过 域名 来访问:

    查询docker 版本命令:
    docker --version

    Docker for Mac v 17.12 以上版本
    直接使用: docker.for.mac.host.internal

    Docker for Mac v 17.06 to v 17.11
    直接使用: docker.for.mac.localhost

    可以 ping 或者 用 telnet ip port 来测试一下

    展开全文
  • As the title says. 如标题所示。 I need to be able to retrieve the IP address the docker hosts and the por

    本文翻译自:How to get the IP address of the docker host from inside a docker container

    As the title says. 如标题所示。 I need to be able to retrieve the IP address the docker hosts and the portmaps from the host to the container, and doing that inside of the container. 我需要能够检索Docker主机的IP地址和从主机到容器的端口映射,并在容器内部进行操作。


    #1楼

    参考:https://stackoom.com/question/1YGwh/如何从Docker容器内部获取Docker主机的IP地址


    #2楼

    唯一的方法是在创建容器时将主机信息作为环境传递

    run --env <key>=<value>
    

    #3楼

    /sbin/ip route|awk '/default/ { print $3 }'
    

    正如@MichaelNeale所注意的那样,没有必要在Dockerfile使用此方法(除非仅在构建期间需要此IP),因为此IP将在构建期间进行硬编码。


    #4楼

    The --add-host could be a more cleaner solution (but without the port part, only the host can be handled with this solution). --add-host可能是一个更简洁的解决方案(但如果没有端口部分,则只能使用此解决方案来处理主机)。 So, in your docker run command, do something like: 因此,在您的docker run命令中,执行以下操作:

    docker run --add-host dockerhost:`/sbin/ip route|awk '/default/ { print  $3}'` [my container]
    

    (From https://stackoverflow.com/a/26864854/127400 ) (来自https://stackoverflow.com/a/26864854/127400


    #5楼

    If you enabled the docker remote API (via -H tcp://0.0.0.0:4243 for instance) and know the host machine's hostname or IP address this can be done with a lot of bash. 如果启用了tcp://0.0.0.0:4243 远程API (例如,通过-H tcp://0.0.0.0:4243 )并且知道主机的主机名或IP地址,则可以通过大量的bash来完成。

    Within my container's user's bashrc : 在我容器的用户的bashrc

    export hostIP=$(ip r | awk '/default/{print $3}')
    export containerID=$(awk -F/ '/docker/{print $NF;exit;}' /proc/self/cgroup)
    export proxyPort=$(
      curl -s http://$hostIP:4243/containers/$containerID/json |
      node -pe 'JSON.parse(require("fs").readFileSync("/dev/stdin").toString()).NetworkSettings.Ports["DESIRED_PORT/tcp"][0].HostPort'
    )
    

    The second line grabs the container ID from your local /proc/self/cgroup file. 第二行从本地/proc/self/cgroup文件中获取容器ID。

    Third line curls out to the host machine (assuming you're using 4243 as docker's port) then uses node to parse the returned JSON for the DESIRED_PORT . 第三行缩小到主机(假设您使用4243作为docker的端口),然后使用node解析DESIRED_PORT返回的JSON。


    #6楼

    For those running Docker in AWS, the instance meta-data for the host is still available from inside the container. 对于在AWS中运行Docker的用户,仍可以从容器内部获得主机的实例元数据

    curl http://169.254.169.254/latest/meta-data/local-ipv4
    

    For example: 例如:

    $ docker run alpine /bin/sh -c "apk update ; apk add curl ; curl -s http://169.254.169.254/latest/meta-data/local-ipv4 ; echo"
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
    v3.3.1-119-gb247c0a [http://dl-cdn.alpinelinux.org/alpine/v3.3/main]
    v3.3.1-59-g48b0368 [http://dl-cdn.alpinelinux.org/alpine/v3.3/community]
    OK: 5855 distinct packages available
    (1/4) Installing openssl (1.0.2g-r0)
    (2/4) Installing ca-certificates (20160104-r2)
    (3/4) Installing libssh2 (1.6.0-r1)
    (4/4) Installing curl (7.47.0-r0)
    Executing busybox-1.24.1-r7.trigger
    Executing ca-certificates-20160104-r2.trigger
    OK: 7 MiB in 15 packages
    172.31.27.238
    
    $ ifconfig eth0 | grep -oP 'inet addr:\K\S+'
    172.31.27.238
    
    展开全文
  • 如何获取docker宿主机ip

    万次阅读 2016-10-13 10:23:07
    获取docker宿主机ip 本文转自[记录无限:www.gluoo.cn]. 在开发调试过程中,很可能遇到类似的情况: 宿主机跑着一个DB,不管是MySQL还是MongoDB,总之跑在宿主机,docker里运行着应用程序,但程序要连...
  • 1.判断运行时环境是否运行在docker中 参考:How to determine if a process runs inside lxc/Docker?...docker容器中如何获取宿主机IP,连接宿主机的某个服务 如何从容器内部获取主机IP Docker Network ...
  • mac下docker从容器内部访问宿主机ip

    万次阅读 2020-01-09 20:20:46
    有两种情况: 1、有网络的情况下: ...通过 ifconfig 是找不到 ip 的,然后 需要找到一个宿主机ip 可以通过 域名 来访问: docker.for.mac.host.internal 可以 ping 或者 用 telnet ip port 来测试一下 ...
  • 在使用 docker 的过程中我不幸需要在 docker 容器中访问宿主机的 80 端口, 而这个 80 端口是另外一个容器 8080 端口映射出去的. 当我在容器里通过 docker 的网桥 172.17.0.1 访问宿主机时, 居然发现: curl: (7) ...
  • Docker 部署 Spring Cloud并让docker容器使用宿主机ip 使用系统、软件版本: linux 版本: [root@VM_0_17_centos docker]# uname -a Linux VM_0_17_centos 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC ...
  • 如何从主机获取Docker容器的IP地址?

    千次阅读 2020-04-01 16:41:06
    Is there a command I can run to get the container's IP address right from the host after a new cont
  • docker容器内部该如何访问主机ip
  • 操作环境 Centos7 ...1.docker宿主机默认的network bridge为docker0,这里另外创建一个bridge:br0,使用物理服务器的em1网卡,配置如下: [root@localhost network-scripts]# vi /etc/sysc
  • 但是容器中无法知道宿主机的ip和映射端口,即eureka上的实例不知道暴露给外部的什么访问IP和端口(宿主机IP和宿主机port)。 请教各位大神,此问题该如何解决,谢谢! **【docker显示宿主机的随机端口32773映射...
  • Java中获取IP地址,主机名称,网卡地址
  • 目前我们的服务都是全部docker化,网关zuul和各微服务都部署在docker里,构成了集群。 用户请求全部到HaProxy,由HaProxy转发到zuul,再由zuul分发给各微服务。 那么我们在做黑名单,或者对ip进行限流时,需要获取...
  • 场景描述在 centos7 运行 docker 容器应用时,需要连接宿主机的 mysql 的 3306 端口,发现连接不上,docker 容器无法访问宿主机的 mysql 数据库。但是,在容器内访问外部网络是可以 ping 通的。原因分析在 centos7 ...
  • 主要介绍了详解如何获取docker容器(container)的ip地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 有些需求是把这个容器与宿主机在同一个网段,但是本人不建议这样子去操作,因为一个容器本身就是一个封装好的服务。建议去按默认的网络去实现。 临时设置 [root@linux-docker01 ~]# vim a.sh # 网桥名称 br_...
  • docker访问宿主机MySQL

    2021-01-21 19:22:07
    有时MySQL安装在宿主机中,而服务在docker容器中,此时可以通过通过以下两张方式访问 方法一 启动docker时使用–net=host --net host这个参数,让容器运行在宿主机相同的网络 此时可以通过127.0.0.1直接连接...
  • mac for docker访问宿主机服务

    千次阅读 2019-05-24 03:33:57
    Docker For Mac的Docker Daemon是运行于虚拟机(xhyve)中的, 而不是像Linux上那样作为进程运行于宿主机,因此Docker For Mac没有docker0网桥 访问方式 1、docker for mac 的容器里可以通过 docker.for.mac.host....
  • 本文将演示windows、mac、linux系统下,让docker容器连接宿主机的mysql。 通用命令 1.创建数据库zipkin,然后创建表:SQL文件 2.注意添加帐号权限,可以在任何ip上访问。 all privileges包含查询、插入、修改等权限...
  • 从容器中获取宿主机IP地址

    千次阅读 2019-09-25 21:49:41
    docker 中的程序需要连接外部的程序,连接的过程中会告知外部程序自己的ip地址,然后外部的程序会回连docker中的程序。由于docker使用的是rancher中的托管模式,外部程序是没办法直接连接到容器中的,那么如何解决呢...
  • docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID 其中 $CONTAINER_ID替换为实际容器的ID即可,由于每次容器启动之后,IP地址会发生变化,所以需要注意。 ...
  • docker-容器间通过宿主机IP间接通信

    千次阅读 2018-12-03 02:12:17
    容器如何获取宿主机docker0网卡IP? 通过容器/etc/profile(hosts)文件 下面2条命令是等效的 --add-host host:$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+') \ --add-host host:$(/sbi...
  • docker容器访问宿主机服务

    千次阅读 2019-10-14 20:23:07
    在使用Docker部署应用时,Docker推荐的方式是将应用及其所依赖的服务(MySQL,Redis等)均使用Docker部署,并通过link或自定义网络相连接。但是,当应用所依赖的服务被安装在宿主机上时,我们需要让容器中的应用能够...
  • 自从Docker容器出现以来,容器的网络通信就一直是被关注的...此种方式是将容器的某个端口映射到宿主机的某个端口,其它主机访问容器提供的服务需要通过宿主机IP进行访问: docker run -p 9000:8000 --name cen...
  • docker知识:Mac下Docker直接访问宿主机

    千次阅读 2019-08-06 22:59:02
    docker知识:Mac下Docker直接访问宿主机 mac下Docker容器访问宿主机端口 mac下的docker其实是虚拟机,所以无法直接访问宿主机 Docker for Mac v 17.12 to v 18.02 直接使用: docker.for.mac.host.internal Docker ...
  • 可以通过使用host.docker.internal作为地址 也可以通过ping host.docker.internal来获取宿主机IP地址
  • 但是我们有一种常见的场景,就是a容器,需要通过宿主机的端口映射,调用b容器的服务,这里如果在a容器内部配置localhost/127.0.0.1/0.0.0.0:port都是不会起作用的,因为容器和容器之间的ip是隔离的,无法互相通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,449
精华内容 4,579
关键字:

docker获取宿主机ip