- 博客(145)
- 收藏
- 关注
原创 Docker--Docker 镜像制作
在软件开发过程中,开发环境和生产环境的差异可能导致“在我的机器上可以运行”的问题。。不同操作系统、不同版本的软件库可能会导致应用程序运行异常。通过Docker镜像,可以将应用程序运行在完全一致的环境中,减少因环境差异带来的问题。Docker镜像包含了运行应用程序所需的一切,只需将镜像拉取到目标机器并运行容器即可。这大大简化了部署过程,尤其是对于微服务架构的应用程序,每个服务都可以打包为一个镜像,快速启动和扩展。
2025-03-02 18:03:41
1734
59
原创 Docker--Docker Compose(容器编排)
WordPress 是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP 语言和 MySQL 数据库开发的,用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客。设置镜像为nginx:1.23.4 ,环境变量为TEST,端口映射为8080,连接网络为mytestnet,映射卷为mynginxhome;可以看到,如果我们网络没有创建一个docker network,那么会自动配置一个默认的网络。此外,根据实际需求,您可以添加更多配置选项或自定义服务、网络和卷。
2025-01-02 09:00:00
3533
64
原创 Docker--Docker Network(网络)
Docker的网络架构是一个复杂而强大的系统,它基于容器网络模型(Container Network Model,CNM)、Libnetwork以及一系列驱动来实现。查看网络的详情。
2024-12-29 20:59:29
3382
78
原创 Docker--Docker Volume(存储卷)
Docker的存储卷是一种。这种绑定关系意味着,当在容器的这个目录下写入数据时,会同步到宿主机的这个目录中;同样,在宿主机的这个目录下写入数据也会同步到容器的这个目录下。
2024-12-19 08:00:00
4496
94
原创 Docker--Docker Container(容器)
简单的讲,。容器是一个轻量级、可移植的软件单元,它包含了运行应用程序所需的所有依赖项。这些容器是基于镜像创建的,而镜像则是静态的只读文件,包含了应用程序的代码、运行时环境、系统库等。容器在运行时会带有可写文件层,并且容器中的进程处于运行状态。
2024-12-08 21:14:34
4344
85
原创 Docker --Docker Image的综合实战
如果我们push不同的标签镜像,那么它会发现一旦有相同的层出现过了,那么它会共享这一层,而我们后续修改这个镜像的话,也是从之前的已经建立的层的基础上去修改的,这样可以节省资源,提高效率.在镜像仓库时为54M,拉取之后是142M,说明拉取之前在镜像仓库是一个压缩的镜像,拉取之后会自动解压;再通过scp拷贝到另一台服务器中,推送到镜像仓库后,也是有压缩的;
2024-12-06 13:51:23
1136
90
原创 Docker--Docker Image(镜像)
Docker镜像(Docker Image)是Docker容器技术的核心组件之一,它包含了运行应用程序所需的所有依赖、库、代码、运行时环境以及配置文件等。简单来说,,它封装了应用程序及其运行环境,使得应用程序可以在任何支持Docker的平台上以相同的方式运行。
2024-11-30 10:40:56
3166
86
原创 Docker--将镜像推送到阿里云仓库中
如果没有创建账号,需要注册,并设置docker login的账号密码。登录阿里云账号,直接在搜索框搜索。进入镜像仓库,有对应的操作指南。这是因为我们的仓库是公开的。
2024-11-27 10:00:07
1772
91
原创 Docker--通过Docker容器创建一个Web服务器
Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件以供全世界浏览,或放置数据文件以供全世界下载。Web服务器的主要功能是提供网上信息浏览服务,它使用HTTP(超文本传输协议)与客户机浏览器进行信息交流。Web服务器是一种被动程序,只有当Internet上运行其他计算机中的浏览器发出请求时,服务器才会响应。Web服务器不仅能够存储信息,还能在用户通过Web浏览器提供的信息的基础上运行脚本和程序。
2024-11-25 10:03:27
5378
91
原创 Docker--命令docker run
nginx容器在后台运行,并且容器80端口映射到宿主机的8081端口上。,所以我们一般不适用-P,而使用参数-p来指定对应端口。由于是在前台运行,所以能通过exit进行退出;进入了centos容器,但没有一个终端界面;给出了伪终端界面,但输入指令没有反应;设置参数–rm,退出时,会自动删除容器。所以我们经常将这两个参数一起使用;通过端口映射运行一个nginx容器。表示为容器重新分配一个伪输入终端。可以看到映射端口为32768;创建一个新的容器并运行容器;
2024-11-22 09:00:00
3514
96
原创 Docker--Docker Registry(镜像仓库)
镜像仓库(Docker Registry)是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。镜像仓库主要负责存储Docker镜像,这些镜像包含了应用程序及其相关的依赖项和配置,是构建和运行Docker容器的基础。除了存储功能外,镜像仓库还提供管理和分发镜像的能力,包括镜像的索引、搜索、登录认证等。
2024-11-19 08:00:00
7389
95
原创 Docker--Docker是什么和对Docker的了解
它本身不是容器,而是容器的易用工具。Docker通过,将代码、依赖项和运行环境打包成一个容器,并利用隔离机制来使得容器之间互相独立、互不影响。Docker是基于Go语言实现的一个开源项目,其源代码是公开的,社区中的开发者可以共同维护和贡献代码。Docker的主要组件包括Docker客户端、Docker服务端(也称为Docker daemon或守护进程)、Docker镜像和Docker容器等。
2024-11-12 16:47:35
2868
92
原创 Docker:LXC容器操作实战
通过LXC来完成容器的创建、体会什么是容器。利用LXC容器技术来隔离特定的应用,提供虚拟执行环境,从而优化资源管理和部署效率。LXC为Linux Container的简写,是一种可以提供轻量级虚拟化的技术,用于隔离进程和资源。LXC利用Linux内核的命名空间(Namespaces)和控制组(CGroups)等特性,为进程提供虚拟的执行环境。每个容器都拥有独立的文件系统、进程空间、网络接口和用户空间环境,但共享相同的内核。与虚拟机相比,LXC容器具有更高的效率、更轻量的特性和更快的启动速度。
2024-11-09 11:14:46
2322
94
原创 Docker-- cgroups资源控制实战
cgroups是Linux内核中的一项功能,最初由Google的工程师提出,后来被整合进Linux内核;它允许用户将一系列系统任务及其子任务整合或分隔到按资源划分等级的不同组内,从而为系统资源管理提供一个统一的框架。
2024-11-05 17:59:57
2914
103
原创 Docker:namespace隔离实战
通过该命令,用户可以在指定的分区上创建不同类型的文件系统,如ext2、ext3、ext4、ms-dos、vfat、xfs等。为容器化、虚拟化和隔离提供强大的基础。通过使用namespace技术,Linux内核可以创建多个独立的命名空间,每个命名空间都可以拥有独立的资源视图和配置信息,使得不同进程或容器可以在各自的独立环境中运行,而互不干扰。,即将存储设备(如硬盘分区、CD-ROM、USB驱动器或网络共享)的文件系统关联到当前文件系统的某个目录上,以便用户可以通过该目录访问存储设备中的数据。
2024-11-02 14:30:00
3777
103
原创 Docker:容器化和虚拟化
这些资源的新虚拟部分是不受现有资源的架设方式、地域或物理配置所限制的。像我们常听的,就是“伪造”一个硬件抽象接口,将一个操作系统及其资源嫁接到硬件上,实现和真实物理机一样的功能。
2024-10-30 11:34:40
3500
96
原创 Docker:技术架构的演进之路
是指在软件开发和系统构建中,为了满足业务需求和技术要求,对系统的整体结构、组件、接口、数据流以及技术选型等方面进行的详细设计和规划。它是软件开发过程中的重要组成部分,为开发团队提供了明确的指导和规范,确保系统能够按照预期的功能、性能、安全性和可扩展性要求进行构建和部署。
2024-10-26 14:58:38
7514
91
原创 Linux--epoll(ET)实现Reactor模式
提供一个面向对象的网络套接字编程接口,允许用户通过继承和实现基类中的纯虚函数来创建不同类型的套接字(例如 TCP 套接字)。它通过一个事件分发器(Reactor)来监听和管理不同的I/O事件,当事件发生时,分发器会将该事件分发给对应的事件处理器来处理。在这个模型中,Reactor 负责监听和处理各种网络事件(如连接、读取、写入等),而 Connection 对象则作为这些事件的处理者。服务器监听一个指定的端口,当有新的连接请求到来时,服务器接受连接并将其注册到Reactor中,以便处理后续的数据读写事件。
2024-10-22 18:46:47
2076
68
原创 Linux--多路转接之epoll
正是因为底层的红黑树会先存储着对应的事件信息,当被监测的文件描述符上有事件发生时,将相应的epitem插入到eventpoll的就绪链表(rdllist)中。: 虽然在底层有红黑树来进行存储对应的事件,但是在用户层是无法了解到底层的存储执行的,因为epoll的底层全由系统来完成的,用户无法操作,所以还需要一个事件数组来存储对应的事件。: epoll是Linux底层中一种高效的I/O多路复用机制,所以也是属于一种事件,需要在用户层创建对应的文件描述符用于表示对epoll的创建;
2024-10-15 18:24:24
1783
93
原创 Linux--多路转接之select
多路转接(也称为多路复用)是一种用于管理多个I/O通道的技术,它能实现同时监听和处理多个I/O事件,而不是为每个I/O通道创建单独的线程或进程。其中,select是实现多路转接的一种常用方法。
2024-10-12 05:00:00
1471
72
原创 Linux--IO模型与高级IO重要概念
在计算机中,IO通常用于与外部设备通信,这些设备包括键盘、鼠标、打印机、显示器、网络等。在网络通信上,主要表示在计算机与计算机之间能通过互联网来进行数据交换,从而实现远程数据与资源的共享。
2024-10-07 18:49:14
2353
77
原创 Linux--网络层IP
IP协议的主要功能是,并且能够在各种不同的物理网络上工作。IP协议为每个网络上的设备分配一个唯一的地址,即IP地址。这个地址用于标识设备在网络中的位置,使得数据能够准确地发送到目标设备。IP协议允许数据包(即IP数据包)在互联网络中从一个网络节点传递到另一个网络节点,直到到达目标地址。这一过程中,数据包可能会经过多个路由器,每个路由器都根据IP地址和网络拓扑来决定数据包的下一跳位置。IP协议提供的是一种无连接的服务,这意味着发送数据之前不需要在发送方和接收方之间建立连接。
2024-08-06 13:53:13
7571
70
原创 Linux--应用层协议HTTP
讲http的协议格式,以及怎么建立一个简单的http服务器,包括对重定向,请求解析,响应包含内容,404时的网页建立,GET与POST方法的不同
2024-08-01 15:18:34
1374
13
原创 Linux--序列化与反序列化
在序列化过程中,对象的状态信息被转换为可以保持或传输的格式(如二进制、XML、JSON等)。序列化后的数据可以被写入到文件、数据库、内存缓冲区中,或者通过网络发送到另一个系统。
2024-07-30 16:40:00
2143
28
原创 Linux--Socket编程TCP
通过多进程的方法,让父进程只负责监听,子进程负责连接,孙进程负责服务,由于孙进程是孤儿进程,相当于线程分离,这样处理服务时就不会受到父子进程的影响了;启动服务器之后,通过循环让服务端不断运行着,在循环里面,服务端可能接收到多个客户端请求的连接,所以accpet要在循环中不断接收看是否有对应的连接;初始化服务端,主要完成套接字的创建绑定,已经完成对应的监听客户端,因为Tcp是有连接的,所以需要监听客户端是否有请求连接的需求;直接通过多线程的方法,将创建的线程进行分离,完成对应的服务任务。
2024-07-28 11:29:40
1872
37
原创 Linux--Socket编程UDP
将接收到的数据信息,可以经过一定的处理,然后发送回客户端,这里中间没有经过处理,只是将接收到的信息直接反馈给客户端而已;利用socket函数创建socket编程接口,AF_INET表示IPv4,SOCK_DGRAM表示udp数据报套接字的;通过智能指针的性质,创建一个指向UdpServer类对象的指针,能够在周期结束时自动回收对应的智能指针;包含一个udp服务端的类,通过一些成员函数,能够实现对应创建类对象,进行初始化和启动对应服务端;,并将该请求直接路由回本机上的相应服务,而不会通过网络发送到外部。
2024-07-27 21:56:01
972
32
原创 Linux--Socket套接字编程
它允许程序创建网络连接,并通过这些连接来。Socket编程是网络编程的基础,广泛应用于客户端-服务器(C/S)架构中。要实现双方通信,就需要对应的地址,那如何找到对方的网络地址呢。
2024-07-19 12:55:57
1311
20
原创 Linux--线程安全、死锁、单例线程池问题
在上一篇中,我们使用的线程池是可以无限制的创建的,如果每个任务或请求都创建一个新的线程池,那么当任务或请求量很大时,会导致创建大量的线程池实例,每个实例内部又可能包含多个线程,这将极大地浪费系统资源,包括内存和CPU时间。当一个进程提出资源请求时,系统首先检查该进程是否满足其最大需求量限制,如果请求合法,则尝试分配资源给该进程并检查是否会导致系统进入不安全状态(即可能发生死锁),如果不会,则分配资源;此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程。
2024-07-16 10:58:02
1720
38
原创 Linux--信号量
当有多个线程时,只要信号量>1,是允许多个线程访问共享资源的而我们这里对于循环队列的生产或者消费都是互斥的,也就是多个生产者时,同时只能有一个生产者对循环队列存入数据,所以这里我们还需要加上互斥锁,使生产者或者消费者有序进入循环队列存取数据;通过信号量,线程在进入关键代码段之前必须获取信号量,一旦完成了对共享资源的操作,就释放信号量,以允许其他线程访问该资源。在循环队列中有两个下标,一个代表生产者的,另一个代表消费者的,生产者生产数据或消费者取出数据都向前移动1;,从而保证了数据的一致性和完整性。
2024-07-13 17:14:44
1085
7
原创 Linux--生产消费模型
阻塞队列是一种支持两个附加操作的队列。这两个附加的操作是:当队列为空时,获取元素的线程会等待队列变为非空;当队列已满时,存储元素的线程会等待队列可用。这里用任务类来作为阻塞队列的任务,让生产者产出对应任务,消费者来解决任务;生产消费模型是多线程编程和分布式系统中的一个经典概念,它描述了生产者和消费者之间的交互方式。:生产者和消费者之间的中间存储区域,用于临时存放生产者生成的数据,直到消费者准备好处理它们。:负责生成数据或任务的实体。在多线程环境中,这通常是一个线程或一组线程。:负责处理数据或任务的实体。
2024-07-12 10:47:18
1571
35
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人