docker

突发奇想下开启了对docker和服务器的一个初探

作用呢 很简单也很大

比如跑了一个项目 或是做了一个网站 在本地的某个端口上(很简单 用node.js的http-server板块 在项目目录执行http-server -p 8080即可 或者用py自带的python -m http.server 8080也行)

要访问它呢 可以用公网或者私网两种方式

私网其实就是 在同一块局域网内或者开热点搭建一个以自己为中心的局域网

用ipconfig获得本机ip 加上端口号

然后在同一局域网的设备就可以访问到

用公网的话 其实可以两种方式

没服务器的情况下 使用内网穿透 将处于私网的本机暴露在公网 这样就能实现访问(显然有风险)

有服务器的话 那就好办了

把项目部署在服务器上 然后使用服务器的公网ip+端口号访问

那么问题来了

怎么部署到服务器

传统方法是把代码文件全都传到服务器上 在服务器上运行这些代码

显然有一个问题就是环境不同 依赖不同 这就需要在代码方面做很多功夫 提高兼容性 可移植性

docker解决了这个问题

它把一个项目所需要的东西打包在一个盒子里面

然后把这个盒子传到服务器 这样就可以不依赖于运行环境 从而很轻易的解决了兼容性问题

这就是docker的简要说明了

很烦的一件事 想清理esl 不但没成功还把自己电脑上docker搞坏了 估计给之后部署javaweb项目挖了个坑

后面再说吧 唉 (emmm离谱 它自我修复了 还给我莫名其妙腾出10g)

对了 这里在引入一下ipv6的概念1

我们之所以有什么私网公网的划分 究其原因就是因为ipv4不够用

不能达到理论上的每台计算机都有一个自己的公网地址 所以需要再层层包装下 使用私网ip

而ipv6解决了这个数量上的问题 有希望达到理想状态的每台设备都有一个能在公网找到的ip地址

这样的话 就无所谓什么借助服务器或者内网穿透来去公开部署本地项目了

(当然 危险性也更高了 别人可以直接攻击到你了)

以及虚拟机的概念

虚拟机和Docker(一种流行的容器技术)在很多方面是相似的,但也有一些重要的区别。

虚拟机

完整的操作系统隔离:每个虚拟机都包含一个完整的操作系统副本,包括内核和用户空间。这意味着它可以运行几乎任何类型的软件,包括那些需要特定操作系统功能的软件。

资源开销:因为每个虚拟机都运行一个完整的操作系统,所以它们通常需要更多的系统资源(如CPU时间、内存和存储空间)。

隔离和安全性:虚拟机提供高度的隔离和安全性,因为每个虚拟机都是完全独立的。

Docker(容器)

共享操作系统:与虚拟机不同,容器共享宿主机的操作系统内核,但在用户空间中隔离。容器内的应用程序感觉就像它们在自己的操作系统中运行,但实际上它们共享宿主机的操作系统。

资源效率:由于容器不需要额外的操作系统,它们通常更轻量级,启动更快,占用更少的资源。

便于迁移和扩展:Docker容器可以很容易地在不同的系统和云环境之间移动,这使得它们在持续集成和持续部署(CI/CD)流程中非常有用。

关联和使用场景

开发和测试:Docker容器非常适合快速开发和部署应用程序,尤其是微服务架构中的应用程序。虚拟机则更适合需要完整操作系统或特定操作系统环境的应用。

服务器和云计算:在服务器和云计算环境中,虚拟机和Docker都广泛使用。虚拟机可以提供全面的虚拟化解决方案,而Docker则用于更轻量级的、基于容器的虚拟化。

资源隔离和安全性:虽然Docker提供了一定程度的隔离,但从安全角度看,虚拟机提供了更强的隔离,因为每个虚拟机都有自己的完整操作系统。

互操作性:在一些情况下,开发者和运维团队可能会同时使用虚拟机和Docker。例如,在虚拟机上运行Docker容器,以结合两者的优势。

一个基于系统的隔离 一个基于软件的隔离

如果是测试较危险的程序 还是使用虚拟机比较好 防止对其他文件造成破坏


⬅️ 拓展局域网思路 🏠 00-网络与项目 ➡️ docker-compose