当前位置: 首页 > 面试题库 >

Docker容器-如何配置以使其在无业游民中运行时获得可行的IP地址?

公西宏峻
2023-03-14
问题内容

Docker(www.docker.io)看起来很棒。但是,在Mac上安装VirtualBox,Vagrant
…和Docker之后,我发现无法从另一台计算机(或从Mac上的终端会话)访问Docker容器中运行的服务。我尝试访问的服务是Redis。

问题似乎是没有路由到分配给Docker容器的IP地址。在这种情况下,容器的IP为172.16.42.2,而Mac的IP为196.168.0.3。

几个注意事项:

  1. 可以访问它-但只能在VirtualBox会话中访问。这可以使用redis-cli -h 172.16.42.2 -p 6379完成。
  2. 我已经将“ config.vm.network:bridged”添加到VagrantFile中,以尝试获取该文件,但这并不能解决问题。

问题答案:

由vagrant生成的VM实际上是隔离的,为了从主机访问它,您可以为其分配专用网络。而不是config.vm.network :bridged尝试config.vm.network :private_network, ip: "192.168.50.4",它应该可以解决问题

但是,这仅允许您访问VM本身,而不是容器。
为此,在运行容器时,可以添加-p选项

例如: docker run -d -p 8989 base nc -lkp 8989

这将在容器中的8989上运行网猫,并公开暴露该端口。由于它也与-d运行,因此容器将处于分离模式,唯一的输出将是容器的ID

为了公开端口,Docker做了一个简单的NAT。为了知道真实的端口,您可以

docker port <ID of the container> 8989

Netcat将可从192.168.50.4的Mac上获得:<结果>



 类似资料:
  • 我正在使用Docker为Mac。我正在Docker容器中运行一个基于nodejs的微服务。我想通过浏览器测试节点微服务。如何获取正在运行的docker容器的IP地址?

  • 问题内容: 如何获取此容器内的容器ip地址? ‘docker inspect $ hostname …’不适合,因为我不将/var/run/docker.sock主机文件共享到容器。 问题答案: 由于IP地址位于/ etc / hosts的第一行中,因此您可以在容器中执行awk命令,该命令显示/ etc / hosts的第一行的第一个单词

  • 问题内容: 我正在研究Centos7。我有一个运行Jenkins的Docker容器。在那个Jenkins容器中,我必须构建并运行其他Docker容器。但是詹金斯不认识码头工人。我能够执行一个shell并将docker安装在容器中。但是,是否有可能让容器在主机上使用我的docker- engine?如何使用? 在Jenkins-(docker)-容器中安装Docker的最佳选择是什么? 问题答案:

  • 问题内容: 我试图在docker容器中运行cron作业 但对我没有用 我的容器只有cron.daily和cron.weekly文件 crontab,cron.d,cron.hourly …在我的容器中不存在 crontab -e也无法正常工作 我的容器使用/ bin / bash运行 问题答案: 这是我运行我的cron容器之一的方法。 Dockerfile: crontab.txt entry.s

  • 问题内容: 我正在尝试在调用shell脚本的docker容器中运行cronjob。 昨天我一直在网上搜索和堆栈溢出,但是我找不到真正可行的解决方案。 我怎样才能做到这一点? 编辑: 我已经创建了一个(带注释的)github存储库,上面有一个工作的docker cron容器,该容器以给定的时间间隔调用shell脚本。 问题答案: 您可以将crontab复制到映像中,以使从该映像启动的容器运行该作业。

  • 我创建了一个(有注释的)github存储库,其中有一个工作的docker cron容器,它以给定的时间间隔调用一个shell脚本。