当前位置: 首页 > article >正文

docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker

docker配置网络

在这里插入图片描述

#宿主机执行命令
ifconfig 查询对应的主机ip 子网掩码 网关地址
#[网卡名称]:inet[主机IP] netmask[子网掩码] broadcast[网关地址]

这里需要重点关注:eno1[网卡名称]以及【192.168.31.225】网关地址
在这里插入图片描述
在宿主机执行docker命令创建一个虚拟网络虚拟网络与宿主机同网段

docker network create -d macvlan --subnet 192.168.31.0/24 --gateway 192.168.31.1 -o parent=eno1 docker-bridge

这里针对上面的创建做一个解释:

-d macvlan :表示创建一个macvlan的网络,使用macvlan网络驱动
–subnet :[网段]【子网名称】
–gateway :指定宿主机所在的网段的网关
-o parent :继承指定网段的网卡 (这里我的宿主机的网卡是eno1所以 选择eno1为继承网卡)
至此创建了一个名称为docker-bridge的macvlan网络名称
在这里插入图片描述在宿主机端运行docker 创建container容器 并为容器配置IP地址

docker run -it --network=docker-bridge --ip=192.168.31.10 --name=test osrf/ros:humble-desktop-full /bin/bash
#至此创建一个静态IP为192.168.31.10的container容器 外部主机可以通过远程实现访问

想通过外部主机实现docker 远程访问container内部

#需要在docker内部进行ssh 远程服务配置
/etc/init.d/ssh status #检查容器是否有ssh服务
sudo apt-get install openssh-server #安装ssh远程链接
#设置root远程访问权限(**这里需要在PermitRootLogin prohibit-password下添加如下内容**)
sudo vim /etc/ssh/sshd_config
PermitRootLogin yes
RSAAuthentication yes
PubkeyAuthentication yes
按esc :wq!保存后
#配置容器的用户密码
passwd

#设置开机自启动
sudo systemctl enable ssh
sudo vim /root/.bashrc
在.bashrc末尾添加如下代码
service ssh start 保存

在外部宿主机进行ping 然后ssh远程访问
在这里插入图片描述
外部主机配置参考
windows 主机 ipconfig的连接网段为192.168.31.95
跟docker container test处于同一个局域网IP内

ping 192.168.31.10
#能够成功接收到回传包数据
ssh root@192.168.31.10 -p 22 #其中22为容器暴露的外部端口
#上图为成功进入docker 容器内部实现window 进入 linux宿主机内部的docker 进行直接通信

参考链接
参考连接
参考链接
参考链接

问题在宿主机不能ping同处在同局域网段的docker container

基础环境:linux 20.04 ip 为有线连接 ip:192.168.31.105
container配置的ip为192.168.31.10
是现在宿主机内部ping同其docker容器
问题:
在这里插入图片描述
解决方法:外部机器能ping通容器,但是宿主机无法ping通,这是因为macvlan的原因,还需要进行以下步骤

#添加一个虚拟网卡 并桥接到物理网卡上 因为上面配置有一个docker-bridge的网桥 所以 
sudo ip link add macvlan-proxy link eno1 type macvlan mode bridge
#主要就是创建一个macvlan-proxy的虚拟网卡 通过bridge 桥接到noa1
#给虚拟网卡配置ip 需要避免ip冲突
#这里window ip 12.168.31.95
#linux ip 192.168.31.195
#板端 ip 192.168.31.67
#docker container test ip 192.168.31.10 
sudo ip addr add 192.168.31.15 dev macvlan-proxy
#启动虚拟网卡
sudo ip link set macvlan-proxy up
#添加路由映射表 ip为container test的ip
sudo ip route add 192.168.31.10 dev macvlan-proxy
#最后成功ping 通同宿主机下docker container在同局域网下的container容器
zhaobojun@zhaobojun:~$ sudo ip link add macvlan-proxy link eno1 type macvlan mode bridge
[sudo] zhaobojun 的密码: 
zhaobojun@zhaobojun:~$ ip addr add 192.168.31.15 dev macvlan-proxy
RTNETLINK answers: Operation not permitted
zhaobojun@zhaobojun:~$ sudo ip addr add 192.168.31.15 dev macvlan-proxy
zhaobojun@zhaobojun:~$ sudo ip link set macvlan-proxy up 
zhaobojun@zhaobojun:~$ ip route add 192.168.31.10 dev macvlan-proxy
RTNETLINK answers: Operation not permitted
zhaobojun@zhaobojun:~$ sudo ip route add 192.168.31.10 dev macvlan-proxy
zhaobojun@zhaobojun:~$ pi
pi1toppm         pidof            pinentry-x11     pip
pi3topbm         pigz             ping             pip3
pic              pinentry         ping4            pivot_root
pico             pinentry-curses  ping6            pixeltool
piconv           pinentry-gnome3  pinky            
zhaobojun@zhaobojun:~$ pin
pinentry         pinentry-gnome3  ping             ping6
pinentry-curses  pinentry-x11     ping4            pinky
zhaobojun@zhaobojun:~$ ping
ping   ping4  ping6  
zhaobojun@zhaobojun:~$ ping 192.168.31.10
PING 192.168.31.10 (192.168.31.10) 56(84) bytes of data.
64 字节,来自 192.168.31.10: icmp_seq=1 ttl=64 时间=0.109 毫秒
64 字节,来自 192.168.31.10: icmp_seq=2 ttl=64 时间=0.075 毫秒
64 字节,来自 192.168.31.10: icmp_seq=3 ttl=64 时间=0.071 毫秒
64 字节,来自 192.168.31.10: icmp_seq=4 ttl=64 时间=0.074 毫秒
64 字节,来自 192.168.31.10: icmp_seq=5 ttl=64 时间=0.077 毫秒
64 字节,来自 192.168.31.10: icmp_seq=6 ttl=64 时间=0.071 毫秒
64 字节,来自 192.168.31.10: icmp_seq=7 ttl=64 时间=0.075 毫秒
64 字节,来自 192.168.31.10: icmp_seq=8 ttl=64 时间=0.063 毫秒
64 字节,来自 192.168.31.10: icmp_seq=9 ttl=64 时间=0.072 毫秒
^C
--- 192.168.31.10 ping 统计 ---
已发送 9 个包, 已接收 9 个包, 0% 包丢失, 耗时 8194 毫秒
rtt min/avg/max/mdev = 0.063/0.076/0.109/0.012 ms

ssh -X root@192.168.31.20
![请添加图片描述](https://i-blog.csdnimg.cn/direct/f5b60424b58d4f77a8c82d119fe2b673.png)


参考连接

sunrise@ubuntu:~$ sudo ip add macvlan-proxy link eno1 macvlan mode bridge
Command "macvlan-proxy" is unknown, try "ip address help".
sunrise@ubuntu:~$ sudo ip add macvlan-proxy link wlan0 macvlan mode bridge
Command "macvlan-proxy" is unknown, try "ip address help".
sunrise@ubuntu:~$ ip link add macvlan-proxy link wlan0 type macvlan mode bridge
RTNETLINK answers: Operation not permitted
sunrise@ubuntu:~$ sudo ip link add macvlan-proxy link wlan0 type macvlan mode bridge
sunrise@ubuntu:~$ sudo ip addr add 192.168.1.60 dev macvlan-proxy
sunrise@ubuntu:~$ ip link set macvlan-proxy up
RTNETLINK answers: Operation not permitted
sunrise@ubuntu:~$ sudo ip link set macvlan-proxy up
sunrise@ubuntu:~$ sudo ip route add 192.168.31.50 dev macvlan-proxy 
sunrise@ubuntu:~$ sudo ip add macvlan-proxy link eno1 macvlan mode bridge
Command "macvlan-proxy" is unknown, try "ip address help".
sunrise@ubuntu:~$ sudo ip add macvlan-proxy link wlan0 macvlan mode bridge
Command "macvlan-proxy" is unknown, try "ip address help".
sunrise@ubuntu:~$ ip link add macvlan-proxy link wlan0 type macvlan mode bridge
RTNETLINK answers: Operation not permitted
sunrise@ubuntu:~$ sudo ip link add macvlan-proxy link wlan0 type macvlan mode bridge
sunrise@ubuntu:~$ sudo ip addr add 192.168.1.60 dev macvlan-proxy
sunrise@ubuntu:~$ ip link set macvlan-proxy up
RTNETLINK answers: Operation not permitted
sunrise@ubuntu:~$ sudo ip link set macvlan-proxy up
sunrise@ubuntu:~$ sudo ip route add 192.168.31.50 dev macvlan-proxy 

请添加图片描述


http://www.kler.cn/a/405637.html

相关文章:

  • 提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法
  • wsl虚拟机中的dockers容器访问不了物理主机
  • 【QT】绘图
  • Spring Web入门练习
  • C# Postman或者PostApi调试前端webapi接口发送带有request/body/head信息
  • 【第4章 | 分类与逻辑回归】(python机器学习)
  • JVM基本结构(详细)
  • 社团管理新策略:SpringBoot技术解析
  • .net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角
  • 内嵌编辑器+AI助手,Wave Terminal打造终端新体验
  • logback动态获取nacos配置
  • 时间请求参数、响应
  • RNN并行化——《Were RNNs All We Needed?》论文解读
  • SQL 通配符
  • Java并发CountDownLatch:原理、机制与应用场景
  • 基于SpringBoot的在线教育系统【附源码】
  • bert的模型训练和使用情绪识别
  • 【大数据学习 | Spark】yarn-client与yarn-cluster的区别
  • eclipse-git项目提示NO-HEAD
  • Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
  • 后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
  • 23省赛区块链应用与维护(房屋租凭)
  • Windows系统编程 - 注册表
  • python语言基础-5 进阶语法-5.4 正则表达式
  • Flink CDC的安装配置
  • 招聘和面试