我们常用的docker容器都是将ip端口映射到宿主机,通过宿主机IP进行访问。外部无法直接访问容器IP,下面简单介绍下怎么做到局域网内直接访问docker容器IP。

自动化脚本见 https://github.com/liwei128/my_pipework.git,一键运行,so easy

说明如下

一、准备工作

1.首先安装pipework

下载:gitHub地址 https://github.com/jpetazzo/pipework.git

文件上传用sftp方式连接,put进行上传

将pipework文件复制到/usr/bin/目录下,并设置为可执行脚本

cp pipework /usr/bin/

chmod +x /usr/bin/pipework

2.查询我们的网卡名、网卡ip、以及默认网关,后面需要用到

我的为ens33      172.16.3.217          172.163.3.1

二、开始设置IP

注意:此步骤可能会断开与宿主机的连接,因为网卡ens33的ip发生了变化,建议写成脚本文件.sh的形式执行

1. 删除ens33上面的ip地址

sudo ip addr del dev ens33 172.16.3.217/24

2. 新建网桥br0,并将ens33网卡桥接到br0

sudo ip link add link ens33 dev br0 type macvlan mode bridge

3.给网桥br0设置ip (为原ens33上的ip)

sudo ip addr add 172.16.3.217/24 dev br0

4.启用br0

sudo ip link set dev br0 up
5.给br0设置默认网关(为上面查询到的默认网关),不然无法访问

sudo ip route add default via 172.16.3.1 dev br0

6.为docker容器指定IP地址

sudo pipework br0 cmv3-manager 172.16.3.251/24@172.16.3.1

sudo  pipework br0 cmv3-mysql 172.16.3.253/24@172.16.3.1

说明:br0是第3步新建的网桥名,cmv3-manager和cmv3-mysql是docker容器名,@前面表示你要为该容器设置的IP地 址,@后面为网关地址

这样就将宿主机网卡以及docker容器接入了同一个网桥br0,实现局域网访问容器ip。效果如下

三、回滚方案

如果你需要还原成原有的IP配置,只需要这样:

sudo ip link delete br0

sudo service network restart

sudo systemctl restart docker

注意:此步骤可能会断开与宿主机的连接,因为网桥br0被删除了,建议写成脚本文件.sh的形式执行

--------------------- 
作者:liwei128 
来源:CSDN 
原文:https://blog.csdn.net/liwei128/article/details/79668612 
版权声明:本文为博主原创文章,转载请附上博文链接!

使Docker容器拥有可被宿主机以外的机器直接访问的独立IP相关推荐

  1. 解决Docker容器没有权限写入宿主机目录

    在应用docker容器的时候,更多的时候我们会把宿主机的目录挂载到docker容器中. 在宿主机的文件夹权限隶属于root时,我们需要将文件夹的权限用户进行 chown 设置,才能保证目录的内容的正常 ...

  2. docker容器的网络配置,允许docker可以被宿主机以外的其它主机访问以及局域网内可以直接访问docker容器ip

    自从Docker容器出现以来,容器的网络通信就一直是被关注的焦点,也是生产环境的迫切需求.容器的网络通信又可以分为两大方面:单主机容器上的相互通信,和跨主机的容器相互通信. 一.端口映射(局域网,外网 ...

  3. 正在运行的容器目录映射到宿主机的讲解

    不想重新 run 容器,但是又必须改目录映射,怎么办? 容器内的目录映射到宿主机上有两种情况,这两种情况无论是哪一种都需要重启docker服务方可生效. 容器目录映射是有两个(hostconfig.j ...

  4. Docker 使用容器数据卷 实现宿主机与容器共享数据 容器数据持久化

    容器数据卷:可以实现宿主机与容器进行共享.容器数据持久化,容器与容器共享数据.可以在run镜像时使用-v参数指定宿主机与容器进行挂载的目录,也可以使用dockerfile的volume指定容器中容器数 ...

  5. docker部署的mysql调整宿主机映射端口

    1.记录mysql容器id 记录docker中mysql的容器id 记录mysql的容器id docker ps关闭docker服务 systemctl stop docker 2.修改配置文件 进入 ...

  6. 如何使docker容器不退出

    运行容器时可以指定其执行什么命令,但是这个命令执行完了,这个容器就自动终止了 所以这个命令执行不会完成,那么容器就不会终止 1. docker run时可以指定/bin/sh -c "whi ...

  7. DOCKER容器与宿主机同网段互相通信

    相关阅读: Docker容器时间与宿主机同步 使用Docker搭建WordPress博客 Docker私有仓库搭建及镜像删除 Docker镜像的导入和导出 在Docker上部署Ambari 博主最近在 ...

  8. sock 文件方式控制宿主机_浅析Docker运行安全

    语法: docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 二. Docker 运行安全相关参数 2.1 启用 AppArmor AppArmor 主要的作用是 ...

  9. docker 连接宿主机的 MySQL

    docker 连接宿主机的 MySQL 本文地址:https://blog.lucien.ink/archives/505 在实际生产过程中,docker 内的服务有时需要连接宿主机的 MySQL,在 ...

最新文章

  1. C# Winform继承窗体打开设计器白屏的一例解决方法
  2. ASP.NET 5 RC 1:UrlRouting 设置(不包含MVC6的UrlRouting设置)
  3. 028_vue路由嵌套
  4. NAACL 2019最佳论文:量子概率驱动的神经网络
  5. 追踪源码自定义负载均衡策略
  6. 登录页面跳出框架的JS
  7. 【转】学会这13个原则写UI界面文案,用户才能秒懂
  8. 在运行SSIS包时,如何动态更新变量值
  9. 各类学术评价对象的发展脉络、测度指标与方法
  10. Python系列之Python-docx生成运行日报Word模板
  11. 9_林业专题图的制作
  12. VS2017社区版试用30天过期重新激活方法
  13. poi导出excel时设置单元格为数字类型(解决:导出Excel时为文本类型选中一整列不能求和问题)
  14. C语言 计算BMI值,建议体重
  15. spark driver HA
  16. USB协议学习笔记 - CUSTOM HID 设备
  17. 阜城中学2021高考成绩查询,河北省衡水市阜城中学2020-2021学年高二上学期开学考试英语试题...
  18. chp6面向对象三大特性 题目7 考点:继承、访问修饰符
  19. RocketMQ报错提示logics disk maybe full soon, so reclaim space, -1.0
  20. 各种投资产品的整理分析(持续更新)

热门文章

  1. Memcache分布式部署方案
  2. PHP7革新与性能优化
  3. MySQL 查询时强制区分大小写
  4. jquery 获取checkbox 或 select 的选中值(一组和单个)
  5. Ubuntu 12.04安装下载工具 UGet 1.8.0 及 aria2用法
  6. docker安装jira心得
  7. Linux下ACE、xml解析库开发环境搭建
  8. shell expect的简单实用
  9. ubuntu 使用apt-get install安装特定版本
  10. 【今日CV 视觉论文速览】 04 Dec 2018