详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)

简介: 容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。

一.什么是容器?

容器是一种轻量级、可移植的软件打包和隔离技术。它将应用程序及其所有依赖项(如库、配置文件、二进制文件等)打包在一个独立的单元中,以确保应用程序可以在任何环境中一致地运行。容器利用了操作系统的虚拟化功能,但比传统的虚拟机更高效和轻量。

容器的特点

轻量级:
与虚拟机不同,容器不需要包含一个完整的操作系统。它们共享主机操作系统的内核,从而减少了开销和启动时间。

可移植性:
容器封装了应用程序及其所有依赖项,确保在不同环境中运行时保持一致性。这意味着你可以在开发环境中创建一个容器,并将其无缝地移植到测试或生产环境中。

隔离性:
每个容器都是独立的,具有自己的文件系统、进程空间和网络接口。这种隔离确保了一个容器中的应用程序不会干扰其他容器中的应用程序。

快速启动:
容器的启动速度非常快,通常在几秒钟内就能启动并运行,这比启动一个虚拟机快得多。

资源利用效率高:
由于容器共享主机操作系统的内核,它们比虚拟机更节省资源,能够在同一台主机上运行更多的应用实例。

容器对比虚拟机有什么区别?

虽然容器和虚拟机都提供了应用程序隔离的能力,但它们的工作原理和资源利用方式有很大的不同。

虚拟机(VM):
每个虚拟机都有自己的完整操作系统,包括内核,这使得虚拟机比较重,启动时间较长,占用更多的资源。

容器:
容器共享主机操作系统的内核,不需要独立的操作系统,这使得容器更轻量、启动更快、资源利用更高效。

容器的工作原理

镜像(Image):
容器镜像是一个只读的模板,包含了应用程序及其运行所需的所有内容。镜像可以看作是容器的蓝图,从中可以创建一个或多个容器。

容器(Container):
容器是镜像的一个运行实例。它从镜像中创建,并包含了运行应用程序所需的所有内容。在运行时,容器可以有自己的文件系统、网络接口、进程空间等。

Docker 引擎:
Docker 引擎是一个轻量级的容器运行时,用于创建、运行和管理容器。它包括一个守护进程(daemon),一个 REST API,以及一个命令行界面(CLI)。

容器的主要技术

Namespace:
Namespace 提供了一个隔离的执行空间,让每个容器都有自己的进程空间、网络接口、文件系统等,从而实现容器间的隔离。

namespace有六个他们分别是
pid namespace(进程隔离)
net namespace(网络隔离)
ipc namespace(进程间交互隔离)
mnt namespace(文件系统隔离)
uts namespace(主机名、域名隔离)
user namespace(用户隔离)

Control Groups(cgroups):
cgroups 控制和限制容器使用的资源,如 CPU、内存、磁盘 I/O 等,确保每个容器都能公平地使用系统资源。

Union File System(UnionFS):
UnionFS 是一种分层的文件系统,允许将多个文件系统叠加在一起形成一个统一的文件系统。Docker 使用 UnionFS 来构建容器镜像和容器,使得镜像可以由多个层组成,每一层都可以共享和复用。

最后了解一下使用容器的优势

一致性和可移植性:
无论是开发、测试还是生产环境,容器中的应用程序运行效果一致,减少了环境配置带来的问题。

高效的开发和部署:
开发人员可以快速构建、测试和部署应用程序,缩短了开发周期。

更好的资源利用:
通过共享操作系统内核和使用 cgroups,容器能够更高效地利用系统资源。

简化的管理:
容器化应用程序的管理更加简单,可以轻松地启动、停止、重启和监控容器。

二、容器部署nginx

实验环境

centos7.9
已安装docker-ce-20.10.20版本

实验步骤

经过上面的了解,我们知道镜像是容器运行的基础,所以我们需要先下载镜像
我们可以先搜索nginx的镜像

[root@vm1 ~]# docker search nginx

可以看到有很多版本,后面带OK的则是官方版本
image.png

本次下载的版本为1.20,比较稳定

[root@vm1 ~]# docker pull nginx:1.20

然后查看一下

[root@vm1 ~]# docker images

可以看到我们刚刚下载好的nginx
以下信息分别是
名称 标签 id 创建时间 大小
我这里创建时间长是因为我之前已经下载过了
image.png

让我们运行容器

[root@vm1 ~]# docker run  -d  -p  80:80  nginx:1.20

docker run:这部分指示Docker运行一个新的容器。

-d:这是一个选项,代表“detached”(分离模式),它告诉Docker在后台运行容器。这意味着容器将在后台运行,并且不会占据当前终端的控制权。

-p 80:80:这也是一个选项,用于指定端口映射。这里的80:80表示将容器内部的80端口映射到宿主机(即宿主操作系统)的80端口,这样外部请求就可以通过宿主机的80端口访问到运行在容器内的Nginx服务。

nginx:1.20:这是指定要运行的镜像名称及版本标签。在这里,它指示Docker运行一个名为nginx的镜像,版本为1.20。

查看容器

[root@vm1 ~]# docker ps -a

看到up就是运行成功了!

image.png
让我们创建一个测试页面并拷贝进容器内

[root@vm1 ~]# echo "nginx is running" > index.html
[root@vm1 ~]# docker  cp  index.html 96:/usr/share/nginx/html/

docker cp 复制文件到容器内
格式
docker cp 文件 容器id:路径

最后用浏览器查看一下结果
记得关闭防火墙关闭沙盒和开启路由转发

临时关闭防火墙
[root@vm1 ~]# systemctl stop firewalld
临时关闭沙盒
[root@vm1 ~]# setenforce 0
开启路由转发
[root@vm1 ~]# echo "net.ipv4.ip_forward" >> /etc/sysctl.conf 
[root@vm1 ~]# sysctl -p

最后用浏览器查看结果就行了
直接访问你这台服务器的ip,我这里是192.168.10.11
image.png
实验完成

如果对您有帮助就点个赞吧

相关文章
|
11天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
83 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
10天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
72 12
|
1月前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
112 13
|
2月前
|
存储 数据安全/隐私保护 数据中心
Incus 6.4 容器和虚拟机管理器发布
【10月更文挑战第26天】
106 2
Incus 6.4 容器和虚拟机管理器发布
|
2月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
53 3
|
2月前
|
存储 持续交付 虚拟化
|
3月前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
2月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
1478 3
|
2月前
|
存储 SQL 数据库
虚拟化数据恢复—Vmware虚拟机误还原快照的数据恢复案例
虚拟化数据恢复环境: 一台虚拟机从物理机迁移到ESXI虚拟化平台,迁移完成后做了一个快照。虚拟机上运行了一个SQL Server数据库,记录了数年的数据。 ESXI虚拟化平台上有数十台虚拟机,EXSI虚拟化平台连接了一台EVA存储,所有的虚拟机都存放在EVA存储上。 虚拟化故障: 工组人员误操作将数年前迁移完成后做的快照还原了,也就意味着虚拟机状态还原到数年前,近几年数据都被删除了。 还原快照相当于删除数据,意味着部分存储空间会被释放。为了不让这部分释放的空间被重用,需要将连接到这台存储的所有虚拟机都关掉,需要将不能长时间宕机的虚拟机迁移到别的EXSI虚拟化平台上。
122 50
|
3月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
97 4