详细解释容器以及虚拟机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
实验完成

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

相关文章
|
1月前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
120 12
|
1月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
160 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
2月前
|
负载均衡 Ubuntu 应用服务中间件
nginx修改网站默认根目录及发布(linux、centos、ubuntu)openEuler软件源repo站点
通过合理配置 Nginx,我们可以高效地管理和发布软件源,为用户提供稳定可靠的服务。
193 13
|
3月前
|
存储 数据安全/隐私保护 数据中心
Incus 6.4 容器和虚拟机管理器发布
【10月更文挑战第26天】
124 2
Incus 6.4 容器和虚拟机管理器发布
|
3月前
|
存储 持续交付 虚拟化
|
4月前
|
应用服务中间件 Linux nginx
CentOS7安装Nginx
CentOS7安装Nginx
|
4月前
|
存储 Linux 开发者
虚拟机centos7.9一键部署docker
本文介绍了如何在 CentOS 7.9 虚拟机上安装 Docker 社区版 (Docker-ce-20.10.20)。通过使用阿里云镜像源,利用 `wget` 下载并配置 Docker-ce 的 YUM 仓库文件,然后通过 `yum` 命令完成安装。安装后,通过 `systemctl` 设置 Docker 开机自启并启动 Docker 服务。最后,使用 `docker version` 验证安装成功,并展示了客户端与服务器的版本信息。文中还提供了列出所有可用 Docker-ce 版本的命令。
344 0
虚拟机centos7.9一键部署docker
|
6天前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
129 15
|
1月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
203 11
|
2月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
96 8
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈