Coolify系列-手把手教学解决局域网局域网中的其他主机访问虚拟机以及docker服务

news2024/11/28 2:30:21

背景

我在windows电脑安装了一个VM,使用VM开启了Linux服务器,运行docker,下载服务镜像,然后运行服务,然后遇到了主机无法访问服务的问题。

问题排查

STEP1:首先要开启防火墙端口,这个我的Coolify系列其他文章有详细讲解,可以参考一下哇~~

STEP2:配置虚拟机网络,让主机以及局域网其他网络均可访问你的虚拟机(如何让局域网中的其他主机访问虚拟机)

设置网络

接下来详细介绍 配置虚拟机网络,让主机以及局域网其他网络均可访问你的虚拟机(如何让局域网中的其他主机访问虚拟机)

当前情况

  • 同一局域网主机1,主机2都为Windows系统,
  • 主机1上安装了VMware,并新增了一台虚拟机,使用CentOS 7系统。
  • 虚拟机的网络适配器设置为NAT模式

目标

  • 主机1可登录此虚拟机
  • 局域网其他主机也可以登录此虚拟机
  • 局域网所有机器都可以访问此虚拟机上面部署的服务

开始动工

检查虚拟机设置,确保为NAT模式

检查虚拟机所在的主机1的网络ip

进入虚拟机:虚拟网络编辑器中查看NAT设置中的网关IP

cd  /etc/sysconfig/network-scripts/     //进入到网络适配器文件夹中,找到你的网络配置文件
vi  ifcfg-eth0    //我的网络配置文件名是ifcfg-eth0,编辑文件
或者通过下面命令来进行搜索
ls | grep 'ifcfg-*'

eth0与ens33的关系:目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此我们 Linux 就称呼这种网络接口为 ethN (N 为数字)。 举例来说,主机上面有一张以太网卡,因此主机的网络接口就是 eth0 (第一张为 0 号开始)。新的 CentOS 7 开始对于网卡的编号有另一套规则,网卡的界面代号与网卡的来源有关,网卡名称会是这样分类的:

  • eno1 :代表由主板 BIOS 内置的网卡
  • ens1 :代表由主板 BIOS 内置的 PCI-E 界面的网卡
  • enp2s0 :代表 PCI-E 界面的独立网卡,可能有多个插孔,因此会有 s0, s1… 的编号~
  • eth0 :如果上述的名称都不适用,就回到原本的默认网卡编号

所以我们可以通过新建一个网卡文件来设定网络配置,重点是这两行

BOOTPROTO=dhcp
ONBOOT=yes

假如centos7里没有ifcfg-eth0只有 ifcfg-ens33(没有Eth0网卡)

参考命令:

cd  /etc/sysconfig/network-scripts/     //进入到网络适配器文件夹中
mv ifcfg-ethXXX ifcfg-eth0     //名字改为ifcfg-eth0
vi  ifcfg-eth0    //编辑文件

那就新增一个,参考配置如下:

TYPE=Ethernet 
DEFROUTE=yes 
PEERDNS=yes 
PEERROUTES=yes 
IPV4_FAILURE_FATAL=no 
IPV6INIT=yes 
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes 
IPV6_PEERDNS=yes 
IPV6_PEERROUTES=yes 
IPV6_FAILURE_FATAL=no 
NAME=eth0
BOOTPROTO=dhcp 
ONBOOT=yes 
DNS1=8.8.8.8

保存,然后重启服务

service network restart  # 重启网络
ping www.baidu.com  # 测试网络


查看IP地址

ip addr

此时我们要做一些测试

  • 虚拟机1能ping通www.baidu.com(已达成)
  • 虚拟机所在的主机1能ping通虚拟机(已达成)
  • 虚拟机能ping通自己所在的主机(已达成)
  • 虚拟机所在的主机1能使用linux工具登录虚拟机(已达成)



安装一个nginx,部署一个网页进行测试

cd /var/opt/
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
cd nginx-1.22.1
./configure
make install
# 打开配置文件,改为喜欢的端口号
vi /usr/local/nginx/conf/nginx.conf
启动nginx
./usr/local/nginx/sbin/nginx
查看nginx是否启动
ps -ef | grep nginx





使用虚拟机所在的主机1访问虚拟机的网页,测试成功

接下来我们让2,3都可以链接虚拟机

设置VMVare的默认网关(相当于我们设置路由器):

编辑->虚拟网络编辑器->更改设置->选中VM8>点击NAT设置,设置默认网关(根据本地的ipconfig设置)


端口转发

选择“NAT设置”,按照下图进行端口转发的设置。将主机的空闲端口指定为8080(可以指定任意的空闲端口),虚拟机的空闲端口同样指定为8080。然后,在主机2上用主机1的IP+主机1的端口的方式来访问虚拟机1中的网页,如:192.168.0.128:8080。如果这样不能访问成功,请接着做下一步。


配置

回到虚拟机所在的主机1:控制面板\所有控制面板项\网络连接,设置主机ip地址,点击VMnet8,设置ip


最后一点哦,配置虚拟机所在主机的防火墙策略,我直接给它关了,这个不太好,建议小伙伴们去设置一下端口策略哦~~

测试访问

经过一系列配置以后,使用宿主机进行测试访问以下三个地址,我们发现

  • VM8地址:http://192.168.33.1:8080/
  • 虚拟机ip直连地址:http://192.168.33.128:8080/
  • 局域网所有IP通用访问地址:http://192.168.1.6:8080/


经过反复测试,确认是偶然性速度快慢问题,速度应该和局域网网络稳定性有关系

接下来我去搞docker

我们创建一个docker测试项目,进行测试

cd /var/opt/
ls
mkdir docker-test-demo
ls
cd docker-test-demo/
touch Dockerfile
vi Dockerfile

写入以下内容

FROM node:9.2.1-alpine
# Install base packages and set timezone ShangHai
RUN apk update && \
    apk add tzdata && \
    /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
WORKDIR /app
COPY ./app /app
RUN npm install
EXPOSE 8090
CMD [ "node", "server.js" ]

补充.dockerignore

touch .dockerignore

.dockerignore写入以下内容

node_modules
npm-debug.log

准备一个简单的nodejs文件

var http = require('http');

http.createServer(function (request, response) {


    response.writeHead(200, { 'Content-Type': 'text/plain' });


    response.end('Hello World\n');
}).listen(8090);

console.log('Server running at http://127.0.0.1:8090/');

将文件放到我们的dockerfile旁边app目录下

mkdir app
cd app

启动docker以及设置开机启动

systemctl start docker
接下来执行
chkconfig docker on
或者
systemctl enable docker.service

下载构建镜像

下载镜像
docker search node
docker pull docker.io/node:9.2.1-alpine
构建镜像,不要忘了後面還有一個點點哦
docker build -t node:v1 .
启动容器脚本
docker run -d -p 8090:8090 node:v1



成功啦~~

在虚拟机使用
curl http://localhost:8090/
在宿主机使用
http://192.168.33.128:8090/
在其他局域网电脑使用
http://192.168.1.6:8090/


今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【c++】设置控制台窗口字体颜色和背景色(system和SetConsoleTextAttribute函数 )(内含超好玩的c++游戏链接)

目录 游戏推荐 研究初步 SetConsoleTextAttribute函数 原型 参数 举个栗子 最后 题外话 一篇游戏笔记。。。 游戏推荐 最近,在玩(完)一个c的控制台游戏。 啊,真的非常好玩。虽然是一个文字游戏,但有很多隐…

分享137个ASP源码,总有一款适合您

ASP源码 分享137个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 137个ASP源码下载链接:https://pan.baidu.com/s/13nF0yADJhSBonIFUIoymPQ?pwdmsl8 提取码&#x…

【C++】位图、布隆过滤器概念与模拟实现

目录 一、位图 1.1 位图的概念 1.2 位图的使用 1.3 位图的实现 1.4 位图的应用 二、布隆过滤器 2.1 布隆过滤器 2.2 布隆过滤器的实现 2.3 布隆过滤器练习题 一、位图 1.1 位图的概念 所谓位图,就是用每一位来存放某种状态,适用于海量数据&am…

监控Python 内存使用情况和代码执行时间

我的代码的哪些部分运行时间最长、内存最多?我怎样才能找到需要改进的地方?” 在开发过程中,我很确定我们大多数人都会想知道这一点,而且通常情况下存在开发空间。在本文中总结了一些方法来监控 Python 代码的时间和内存使用情况…

【24】C语言 | 调试技巧

目录 1、调试概念: 2、Debug和Release的介绍 3、windows中的快捷键 4、案例一:求1! 2!3!...n! 5、案例二:下面的代码输出什么? 6、案例三:实现一个strcopy的函数 …

零入门容器云网络实战-3->Underlay网络与Overlay网络总结

本篇文章主要用于收集、整理、总结关于Underlay网络以及overlay网络相关知识点。 1、underlay网络介绍? 1.1、什么是underlay网络? Underlay网络就是: 传统IT基础设施网络,由交换机和路由器等设备组成,借助以太网协议…

3分钟搭建起聊天机器人需要的NoneBot2环境

创建nonebot2运行环境 官网上说这里的Python版本要高于3.8.0,还会有其他的依赖。 所以这里推荐大家使用虚拟环境,Poetry、venv、Conda,我这里用的是conda环境(不同的项目依赖可能有所不同,所以才创建虚拟环境&#xf…

[羊城杯 2020]EasySer

目录 信息搜集 代码审计 参数扫描 信息搜集 先扫下目录 .htaccess&#xff1b;robots.txt&#xff1b;flag.php&#xff1b;index.php 在robots.txt下看到了/star1.php 进入star1.php发现出现ser.php <!-- 小胖说用个不安全的协议从我家才能进ser.php呢&#xff01; !--…

蓝桥杯刷题015——最少刷题数(二分法+前缀和)

问题描述 小蓝老师教的编程课有 N 名学生, 编号依次是 1…N 。第 i 号学生这学期刷题的数量是 Ai​ 。 对于每一名学生, 请你计算他至少还要再刷多少道题, 才能使得全班刷题比他多的学生数不超过刷题比他少的学生数。 输入格式 第一行包含一个正整数 N 。 第二行包含 N 个整数:…

学成在线项目开发技巧整理---第一部分

学成在线项目开发技巧整理---第一部分1.数据字典2.http-client远程测试插件,可以保存测试数据3.三种跨域解决4.具有多层级数据查询思路5.Mybaits分页插件原理6.根据文件后缀解析出mime-type7.大文件上传8.Spring事务什么时候会失效9.分布式文件系统MinIo10.构建独立文件系统11.…

3.3Sram和Dram

文章目录一、引子二、存储元件1.DRAM芯片&#xff08;1&#xff09;栅极电容1&#xff09;存储2&#xff09;读出&#xff08;2&#xff09;物理特性&#xff08;3&#xff09;DRAM刷新&#xff08;4&#xff09;DRAM地址线复用2.SRAM芯片&#xff08;1&#xff09;双稳态触发器…

爬虫之JS的解析

JS的解析 学习目标&#xff1a; 了解 定位js的方法了解 添加断点观察js的执行过程的方法应用 js2py获取js的方法 1 确定js的位置 对于前面人人网的案例&#xff0c;我们知道了url地址中有部分参数&#xff0c;但是参数是如何生成的呢&#xff1f; 毫无疑问&#xff0c;参数肯…

gin全解

文章目录介绍安装快速开始&#xff08;三种启动方式&#xff09;参数获取querystring参数其他不常用方法表单参数&#xff08;form参数&#xff09;其他不常用方法获取path参数参数绑定文件上传单个文件多个文件请求&#xff08;ctx.Request)响应gin.H{}字符串响应JSON/YAML/TO…

一起自学SLAM算法:8.2 Cartographer算法

连载文章&#xff0c;长期更新&#xff0c;欢迎关注&#xff1a; Gmapping代码实现相对简洁&#xff0c;非常适合初学者入门学习。但是Gmapping属于基于滤波方法的SLAM系统&#xff0c;明显的缺点是无法构建大规模的地图&#xff0c;这一点已经在第7章中讨论过了。而基于优化的…

Python爬虫之findall和lxml

Python爬虫之findall和lxml 提示&#xff1a;前言 Python爬虫之findall和lxml 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录Python爬虫之findall和lxml前言一、导入包二、设置URL和获取视频链接三、解析视频名字…

31. 实战:PyQuery获取小电视Top100详细信息(文末源码)

目录 前言 &#xff08;链接放在评论区&#xff09;&#xff08;链接放在评论区&#xff09;&#xff08;链接放在评论区&#xff09; 目的 &#xff08;链接放在评论区&#xff09;&#xff08;链接放在评论区&#xff09;&#xff08;链接放…

趣味三角——第4章——三角学迈向解析化

第4章 三角学迈向解析化(或分析化) 目录 4.1 三角学迈向解析化的过程简述 4.2 Franois Vieter对三角学解析化的贡献 “Thus the analysis of angular sections involves geometric and arithmetic secrets which hitherto have been penetrated by no one(因此&#xf…

Idea中指定xml文件失效

目录一、&#x1f407; 项目场景&#xff1a;二、&#x1f407; 问题描述三、&#x1f407; 原因分析&#xff1a;四、&#x1f407; 解决方案&#xff1a;一、&#x1f407; 项目场景&#xff1a; 最近狮子在搞一个项目&#xff0c;需要用到数据库多表查询&#xff0c;所以在…

数据挖掘,计算机网络、操作系统刷题笔记35

数据挖掘&#xff0c;计算机网络、操作系统刷题笔记35 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;orac…

【论文翻译】Jointformer :一种基于误差预测和改进的三维人体姿态估计的单帧提升变压器

摘要 单目三维人体姿态估计技术有望极大地提高人体运动数据的可用性。表现最好的单幅图像2D3D提升模型使用图卷积网络(GCNs)&#xff0c;通常需要一些手动输入来定义不同身体关节之间的关系。我们提出了一种新的基于变压器的方法&#xff0c;该方法使用更广泛的自我注意机制来…