docker容器IP“暴露”到外网(宿主机外)

首先将docker容器IP固定

Docker自身的4种网络工作方式,简略说明下:

host模式,使用--net=host指定。

container模式,使用--net=container:NAME_or_ID指定。

none模式,使用--net=none指定。

bridge模式,使用--net=bridge指定,默认设置。

可以通过命令docker network ls查看。具体细节自行查阅官方文档。

因为docker的这四种网络都禁止用户为容器指定固定ip,所以需要自己创建网络。

docker network create --subnet=172.172.0.0/24 docker-br0

执行上述创建语句,再次执行docker network ls,docker network列表中多了我们刚创建的自定义网络,ip段可以自己定义,/24 是子网掩码。

有了自定义网卡,我们就可以为新启动的容器指定固定ip了。

docker run -itd --net=docker-br0 --ip 172.172.0.101 --name init busybox 

docker exec -it init /bin/sh

进入容器后执行

ifconfig

分配了我们指定的172.172.0.101。

暴露ip给外网

举个实际场景。

我的开发环境是mac,在mac上安装了centos虚拟机,然后在这台centos上安装了docker,并启动了刚才的docker容器。

docker容器内是可以ping同mac的IP,但是mac是无法ping通docker容器的。

所以我们需要将所有访问容器ip段(172.172.0.0/24)的连接都交由虚拟机(centos)进行路由。

执行以下命令

ip route add 172.172.0.0/24 via 10.1.10.95 dev en4

10.1.10.95是虚拟机centos的ip地址。en4是mac上的网卡(可以通过ifconfig查看)。

mac上没有ip这个命令,需要单独安装:

brew install iproute2mac

查看刚添加好的路由

ip route

如果要删除

ip route del 172.172.0.0/24

好了,现在可以ping同刚创建的容器了

相信看到这里,应该明白怎么将容器IP“暴露”出去了。

docker入门(三)的更多相关文章

  1. 第三章 Docker 入门

    第三章 docker 入门 3.1 确保docker已经就绪 首先查看docker程序是否存在,功能是否正常 [#3#cloudsoar@cloudsoar-virtual-machine ~]$su ...

  2. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

  3. Docker入门(三)使用Docker Compose

    Compose介绍   Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 是一个用户定义和运行多个容器的 Docker 应用程序.在 ...

  4. Docker 入门 第三部分: 服务

    目录 Docker 入门 第三部分: 服务 先决条件 介绍 你的第一个 docker-compose.yml 文件 docker-compose.yml 运行你新建的负载均衡应用 扩展应用程序 卸载应 ...

  5. Docker入门(三):容器(Containers)

    这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...

  6. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  7. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

  8. Docker入门

    -----------------------------------------Docker入门教程(一)介绍Docker入门教程(二)命令Docker入门教程(三)DockerFileDocker ...

  9. Docker 入门实践

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:张戈 导语 本文从新手视角记录了一个实际的Dokcer应用场景从创建.上传直到部署的详细过程,并简单的介绍了腾讯云容器服务的使用方法 ...

  10. Docker(一):Docker入门教程

    如今Docker的使用已经非常普遍,特别在一线互联网公司.使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力.在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如 ...

随机推荐

  1. Eclipse Creating a New Runnable JAR File 清理工作空间下的配置文件

    D:\workspacegit\.metadata\.plugins\org.eclipse.debug.core\.launches 相关文件存在这里.

  2. vue$ref

    vue的$ref方法 可以在元素上template中直接添加ref属性 类似html的id属性 用来做选项卡的切换的

  3. ESXi 更新补丁 暂时未测试 等有时间尝试一下.

    下载地址: https://my.vmware.com/group/vmware/patch 使用操作图: 选择相应的zip包下载即可 更新方式: 命令方式升级ESXi主机补丁包 1.进入VMware ...

  4. 软件开的目录规范+sys,os,time模块

    —————————————————————————————————————————————————————————————————— start.py import sys,os # print(__ ...

  5. 一对一 只需将另一个表的id设置为主键和外键即可

    一对一 只需将另一个表的id设置为主键和外键即可 

  6. day14 闭包

    闭包的概念 必须要有函数嵌套,内部函数调用外部函数的变量 简单的例子 此种方法会导致每次使用内部函数inner的时候需要不断的调用外部函数. 结果导致外部函数的变量不断的被调用被释放,比较低效,相当于 ...

  7. install nagios pnp4nagios on centos 6

    安装配置Apache.PHP(忽略此次安装步骤) 安装nagiosrpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release ...

  8. Leetcode 237.删除链表中的节点 By Python

    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 4 -> 5 -> 1 - ...

  9. 移除SharePoint2013里的NoteBook笔记本链接

    cls $featureID = (Get-SPFeature | ?{ ($_.DisplayName -eq "SiteNotebook") -and ( $_.Scope - ...

  10. uoj【UNR #3】To Do Tree 【贪心】

    题目链接 uojUNR3B 题解 如果不输出方案,是有一个经典的三分做法的 但是要输出方案也是可以贪心的 设\(d[i]\)为\(i\)节点到最深的儿子的距离 贪心选择\(d[i]\)大的即可 #in ...