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

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 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

参考连接

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 

相关文章:

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

docker配置网络 #宿主机执行命令 ifconfig 查询对应的主机ip 子网掩码 网关地址 #[网卡名称]:inet[主机IP] netmask[子网掩码] broadcast[网关地址]这里需要重点关注:eno1[网卡名称]以及【192.168.31.225】网关地址 在宿主机执行docker命令创建一个虚拟…...

4-7-1.C# 数据容器 - LinkedList(LinkedList 的定义、LinkedList 结点的遍历、LinkedList 的常用方法)

LinkedList 概述 LinkedList<T> 通过节点&#xff08;Node&#xff09;来存储数据&#xff0c;每个节点包含数据和指向下一个节点的引用 LinkedList<T> 存储的元素是可重复的 LinkedList<T> 支持泛型&#xff0c;可以指定存储的元素的类型 LinkedList<…...

「三」体验HarmonyOS端云一体化开发模板——使用DevEco Studio直接创建端云一体化工程

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…...

确保以管理员权限运行 Visual Studio 开发者命令提示符

文章目录 解决方法&#xff1a;1. 以管理员身份运行命令提示符2. 改变目录权限3. 改变项目目录位置4. 检查文件系统权限 总结&#xff1a; ********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.12.0 …...

命令执行简单(棱角社区有毒)

前言&#xff1a;小迪安全2022第一节反弹shell&#xff0c;小迪用的是两台都是云服务器&#xff0c;没有服务器可以在自己的主机上搭建也是可以的&#xff0c;主机上搭两个网站 思路&#xff1a;生成一个木马文件&#xff0c;下载到本机&#xff0c;然后利用本机上传到目标主机…...

Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程

环境&#xff1a; keil版本为5.38&#xff0c;版本务必高于5.30 STM32F4的pack包版本要高于2.9 软件包下载地址&#xff1a;https://zhuanlan.zhihu.com/p/262507061 一、更改Keil中编译器 更改后编译&#xff0c;会报很多错&#xff0c;先不管。 二、更改头文件依赖 观察…...

Kafka-创建topic源码

一、命令创建topic kafka-topics --create --topic quickstart-events --bootstrap-server cdh1:9092 --partitions 2 --replication-factor 2 二、kafka-topics脚本 exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.TopicCommand "$" 脚本中指定了…...

【网络安全】(一) 0成本添加访问级监控

互联网的安全感这个概念源于阿里。顾名思义&#xff0c;让互联网的用户对于web产品能够产生足够的信任和依赖。特别是涉及到用户资金交易的站点&#xff0c;一次严重的用户资料泄露就可以彻底毁掉你的品牌。 然而当前阶段除了bat大部分互联网行业的企业对于网络安全给的重视都…...

【Three.js基础学习】26. Animated galaxy

前言 shaders实现星系 课程回顾 使用顶点着色器为每个粒子设置动画 a属性 &#xff0c; u制服 &#xff0c;v变化 像素比&#xff1a;window.devicePixelRatio 自动从渲染器检索像素比 renderer.getPixelRatio() 如何尺寸衰减&#xff0c; 放大缩小视角时&#xff0c;粒子都是同…...

vscode使用ssh配置docker容器环境

1 创建容器&#xff0c;并映射主机和容器的指定ssh服务端口 2 进入容器 docker exec -it <容器ID> /bin/bash 3在容器中安装ssh服务 apt-get update apt-get install openssh-server 接着修改ssh文件信息,将容器的10008端口暴露出来允许root用户使用ssh登录 vim /…...

NLP论文速读(EMNLP 2024)|动态奖励与提示优化来帮助语言模型的进行自我对齐

论文速读|Dynamic Rewarding with Prompt Optimization Enables Tuning-free Self-Alignment of Language Models 论文信息&#xff1a; 简介: 本文讨论的背景是大型语言模型&#xff08;LLMs&#xff09;的自我对齐问题。传统的LLMs对齐方法依赖于昂贵的训练和人类偏好注释&am…...

【LeetCode】167. 两数之和 II - 输入有序数组

描述 给定一个下标从 1 开始的整数数组numbers&#xff0c;该数组已按非递减顺序排列&#xff0c;请从数组中找出满足相加之和等于目标数target的两个数。如果这两个数分别是numbers[index1]和numbers[index2]&#xff0c;返回整数数组[index1, index2]。 只存在唯一答案&#…...

Getx:GetxController依赖管理02,Binding绑定全局控制器(懒加载Controller)

在使用GetX 状态管理器的时候&#xff0c;如果每个页面都手动实例化一个控制器就太麻烦了&#xff0c; Binding 的作用就是所有需要进行状态管理的控制器进行统一初始化 创建全局控制器Binding import package:get/get.dart; import ../controllers/counter.dart; // 同上一篇内…...

leetcode 找不同

389. 找不同 已解答 简单 相关标签 相关企业 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1&#xff1a; 输入&#xff1a;s "abcd"…...

2025 - 生信信息学 - GEO数据分析 - RF分析(随机森林)

GEO数据分析 - RF分析&#xff08;随机森林&#xff09; 01 准备数据文件 #install.packages("randomForest")#引用包 library(randomForest) set.seed(123456)inputFile"diffGeneExp.txt" #输入文件 setwd("/Users/wangyang/Desktop/BCBM/02ra…...

Matlab深度学习(四)——AlexNet卷积神经网络

网络搭建参考&#xff1a;手撕 CNN 经典网络之 AlexNet&#xff08;理论篇&#xff09;-CSDN博客 在实际工程应用中&#xff0c;构建并训练一个大规模的卷积神经网络是比较复杂的&#xff0c;需要大量的数据以及高性能的硬件。如果通过训练好的典型网络稍加改进&#xf…...

etcd defrag

场景 prometheus监控告警,告警信息如下 etcd cluster "kube-etcd": database size in use on instance xx is 33.45% of the actual allocated disk space, please run defragmentation (e.g. etcdctl defrag) to retrieve the unused fragmented disk space.处理…...

golang语言整合jwt+gin框架实现token

1.下载jwt go get -u github.com/dgrijalva/jwt-go2.新建生成token和解析token文件 2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件 2.2 jwtconfig.go文件代码 /* Time : 2021/8/2 下午3:03 Author : mrxuexi File : main Software: GoLand */ package jwtC…...

数据治理、数据素养和数据质量管理:文献综述

注意&#xff1a;这并不是正式发表的论文&#xff0c;只是一篇用来交作业的文章 摘要 随着数据时代的到来&#xff0c;数据治理、数据素养和数据质量管理成为组织数据管理中的三大核心概念。本文基于相关研究与实践&#xff0c;对这三个领域进行全面综述&#xff0c;探讨它…...

【Linux】用户和用户组管理

管理用户 1&#xff0e;添加用户账号——useradd命令 【实例2-1-1】 按系统默认配置添加指定用户账号st和stu。 # 添加用户账号st [rootlocalhost ~]# useradd st # 添加用户账号stu [rootlocalhost ~]# useradd stu【实例2-1-2】添加用户账号stu01&#xff0c;UID为1004&am…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...