当前位置: 首页 > news >正文

云时代【5】—— LXC 与 容器

云时代【5】—— LXC 与 容器

  • 三、LXC
    • (一)基本介绍
    • (二)相关 Linux 指令
    • 实战:使用 LXC 操作容器
  • 四、Docker
    • (一)删除、安装、配置
    • (二)镜像仓库
      • 1. 分类
      • 2. 相关指令
        • (1)镜像仓库指令
        • (2)镜像指令(部分)
        • (3)容器指令(部分)
      • 3. 实战演习
        • (1)搭建一个服务器:Nginx
        • (2)创建私有镜像仓库:BusyBox

三、LXC

(一)基本介绍

LXC(LinuX Containers)是Linux 容器,一种操作系统层虚拟化技术,为 Linux 内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container), 包含:应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的命名空间 和 共享 API 来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境, 使得 Linux 用户可以容易的创建和管理系统或应用容器
LXC 是最早一批真正把完整的容器技术用一组简易使用的工具和模板来极大的简化了容器技术使用的一个方案。它虽然极大的简化了容器技术的使用,但比起直接通过内核调用来使用容器技术, 其复杂程度其实并没有多大降低,主要是以下的三个原因:

  • 必须要学会 LXC 的一组命令工具
  • 由于内核的创建都是通过命令来实现的,需要通过批量命令实现数据迁移并不容易
  • 其隔离性也没有虚拟机那么强大

因此后来就出现了 Docker,所以从一定程度上来说,Docker 就是 LXC 的增强版。
image.png

(二)相关 Linux 指令

systemctl status lxc # 可见检查是否安装# 如果有需要先停止再清理
lxc-ls -f # 遍历所有容器
lxc-stop -n name-xxx # 停止对应的容器
lxc-destroy -n name-xxx # 删除对应的容器
# 如果有需要先停止再清理
lxc-ls -f # 遍历所有容器
lxc-stop -n name-xxx # 停止对应的容器
lxc-destroy -n name-xxx # 删除对应的容器apt-get purge --auto-remove lxc lxc-templates
apt install lxc lxc-templates bridge-utils -y# lxc 主程序包
# lxc-templates lxc的配置模板
# bridge-utils 网桥管理工具

实战:使用 LXC 操作容器

lxc-checkoutconfig

image.png

cd /usr/share/lxc/templates # 存放模板的位置# 第一次创建会比较久,主要与容器的类型有关
lxc-create -t ubuntu --name lxctest -- - r xenial -a amd64
# -t 容器类型
# --name 容器名字
# -r 指定使用 xenial 版本的 Ubuntu
# -a amd64架构

image.png

lxc-ls -f

image.png

lxc-start -n lxchost1 -d

image.png

# 方式1:使用SSH
ssh ubuntu@IPlxc-attach -n lxchost1 --clear-env -- /bin/bash

image.png
image.png

lxc-ls -f # 查看
lxc-stop -n lxchost1 # 停止lxc-ls -f # 查看
lxc-detroy -n lxchost1 # 删除lxc-ls -f

image.png

四、Docker

Docker 本质其实是 LXC 之类的增强版,它本身不是容器,而是容器的易用工具。容器是 Linux 内核中的技术,Docker 只是把这种技术在使用上简易普及了。Docker 在早期的版本核心就是 LXC 的二次封装发行版。Docker 只是作为容器技术的一个实现,或者说让容器技术普及开来的最成功的实现。
Docker 是基于 Go 语言实现的一个开源项目,它的主要目标是**“Build,Ship and Run Any APP,Anywhere”**,即通过对组件的封装、分发、部署、运行等生命周期的管理,使得用户的应用及其运行环境能够做到“一次封装,到处运行”
早期 Docker 利用 LXC 做容器管理引擎,但是在创建容器时,不再使用模板去安装生成,而是通过镜像技术(把一个操作系统用户空间所需要使用到的组件事先编排好, 并整体打包成一个文件,image 文件),镜像文件集中放在一个仓库中。当需要创建容器时,Docker 调用 LXC 的工具 **lxc-create**,但不再通过 lxc 的模板去安装,而是连接到镜像服务器上下载匹配的镜像文件,而后基于镜像启动容器。所以,Docker 极大的 简化了容器的使用难度。以后我们创建启动容器,只需要一个命令,docker-rundocker-stop 就可以启动停止一个容器了。

Docker 架构图:
image.png

程序部署过程变化:
image.png

(一)删除、安装、配置

检查环境

cat /etc/*release*uname -a

image.png

gpg 相当于公钥,用于校验

(二)镜像仓库

1. 分类

我们可以按是否对外开放划分成两类:

  • 公有仓库:像阿里云、dockerhub等放到公有网络上,不用登录就可以下载镜像,供大家访问使用
  • 私有仓库:不对外开放,往往往位于私有网络,只有公司内部人员可以使用

我们可以登录到DockerHub链接上,先创建自己的镜像仓库,创建步骤也非常简单:
image.png

2. 相关指令

(1)镜像仓库指令
docker login

image.png

docker pull [镜像]:[版本]
docker pull [镜像]@[DIGEST]

image.png
image.png

docker push [镜像]:[版本号] # denieddocker tag [旧镜像]:[版本号] [新镜像]:[版本号]
docker push [新镜像]:[版本号]

image.png
可以看到推送被拒绝了,也就是说我们并不能随便推送到某个仓库中!为了验证,我们可以自己弄一个仓库,步骤如下:
image.png
image.png
image.png
image.png
image.png

docker tag nginx:1.23.4 lllzxx/fortest:v1.23.4.2
docker tag nginx:1.23.4 lllzxx/fortest:v1.23.4.3docker push lllzxx/fortest -a

image.png
image.png

docker search nginx
docker search --no-trunc nginx

image.png

docker logout

image.png

(2)镜像指令(部分)
docker imagesdocker image lsdocker image list

image.png

docker images nginx

image.png
image.png

docker image inspect nginx:1.23.4docker image inspect 'IMAGE ID'

image.png
image.png

docker tag 'IMAGE ID' [新镜像]:[版本号]

image.png

(3)容器指令(部分)
docker psdocker ps  -a

image.png
image.png

docker run nginx:1.23.4

image.png

docker run -d nginx:1.23.4# 断网 或者 手动退出 都不影响

image.png

docker stop <ContainerName>

image.png


docker run -it centos:7 bash# -t 创建伪终端(无法交互)
# -i 能够交互

image.png
image.png

docker run -i centos:7 bash

image.png


docker run -d -p 80:80 nginx:1.23.4netstat -ntlp | grep 80docker run -d -p 8081:80 nginx:1.23.4 
# -p 指定宿主机的端口(容器端口映射到主机端口)

image.png
image.png

docker run -d -P nginx:1.23.4 # -P 随机生成宿主机端口

image.png
image.png


docker run -d --name mynginx1 nginx:1.23.4

image.png

docker run -it -h mycentos7 centos:7 bash

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

docker run -it -h mycentos7 -e myenv=test centos:7 bash

image.png


cat /proc/cpuinfo

image.png

docker run -d --name mynginx2 --cpuset-cpus="0" nginx:1.23.4

image.png


free -m 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

docker run -d --name mynginx3 nginx:1.23.4
docker run -d --name mynginx3 -m 500m nginx:1.23.4

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
image.png


docker run -it --name mycentos1 centos:7 bashdocker run -it --name mycentos2 --link mycentos1:mywebsite1 centos:7 bash
ping mycentos1

image.png


docker run -it --name mycentos4 --rm centos:7 bash 

image.png


3. 实战演习

(1)搭建一个服务器:Nginx
rpm -qa

正向代理:跨过防火墙、加速、保护正向请求服务器、能做缓存
反向代理(超市屏蔽了大部分的供应商):保护背后的服务器、负载均衡

ducker run -p 8082:80 --name myweb1 -h myweb.com -e myenv=test -it nginx:1.23.4 bash# 注意目前只是在前台执行

image.png

nginx # 手动启动
ps -ef | grep nginx

image.png

curl 127.0.0.1 # 本机
curl 127.0.0.1 # 容器上的Nginx

image.png

cd /usr/share/nginx/html
dir
echo "Hello World" > index.htmlcurl 127.0.0.1.8082

image.png

(2)创建私有镜像仓库:BusyBox
wget 

image.png

mv busybox-x86_64 busyboxchmod +x busybox # 在运行 busybox 之前需要确保它由可执行权限
# chmod 是 "change mode" 的缩写,用于改变文件或目录的权限。
# +x 表示添加执行(execute)权限。ls -l busybox # ll busybox (ls-list)

image.png

./busybox

三步走:①选择一个仓库并登录(GitHub 阿里云 腾讯云) ②给镜像打标签 ③推送该镜像到仓库

相关文章:

云时代【5】—— LXC 与 容器

云时代【5】—— LXC 与 容器 三、LXC&#xff08;一&#xff09;基本介绍&#xff08;二&#xff09;相关 Linux 指令实战&#xff1a;使用 LXC 操作容器 四、Docker&#xff08;一&#xff09;删除、安装、配置&#xff08;二&#xff09;镜像仓库1. 分类2. 相关指令&#xf…...

npm digital envelope routines::unsupported

问题描述&#xff1a;npm运行命令报错&#xff1a;digital envelope routines::unsupported 原因&#xff1a;node版本过高 解决方案&#xff1a;在运行命令之前加上 SET NODE_OPTIONS--openssl-legacy-provider && SET NODE_OPTIONS--openssl-legacy-provider &&a…...

深入理解Flutter中的StreamSubscription和StreamController

在Flutter中&#xff0c;StreamSubscription和StreamController是处理异步数据流的重要工具。它们提供了一种方便的方式来处理来自异步事件源的数据。本文将深入探讨它们的区别以及在实际应用中的使用场景。 StreamSubscription StreamSubscription代表了对数据流的订阅&…...

聊聊 HTTP 性能优化

作为用户的我们在 "上网冲浪" 的时候总是希望快一点&#xff0c;尤其是抢演唱会门票的时候&#xff0c;但是现实并非如此&#xff0c;有时候我们会遇到页面加载缓慢、响应延迟的情况。 而 HTTP 协议作为互联网世界的基础&#xff0c;从网站打开速度到移动应用的响应…...

六、防御保护---防火墙内容安全篇

攻击可能只是一个点&#xff0c;防御需要全方面进行 DPI --- 深度包检测技术 --- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对 数据包的内容进行识别。&#xff08;应用层&#xff09; 1&#xff0c;基于“特征字”的…...

HC32F460 是否有 RTC?在电池供电方案中该如何使用?

[技术问答]HC32F460 是否有 RTC&#xff1f;在电池供电方案中该如何使用&#xff1f;_hc32f460 rtc-CSDN博客 华大HC32A460 系列介绍&#xff08;三&#xff09;_华大单片机内部温度传感器-CSDN博客 HC32F460PETB-LQFP100-华大半导体有限公司 [【HC32F460开发板测评】&#xf…...

HTML---表单验证

文章目录 目录 本章目标 一.表单验证概述 二.表单选择器 属性过滤选择器 三.表单验证 表单验证的方法 总结 本章目标 掌握String对象的用法会使用表单选择器的选择页面元素会使用JQuery事件进行表单验证Ajax的概念和作用 一.表单验证概述 前端中的表单验证是在用户提交表…...

基于tomcat的JavaWeb实现

Tomcat服务器 免费&#xff0c;性能一般的服务器 安装配置 基于Java&#xff0c;故需要配置环境变量&#xff0c;新加系统路径JAVA_HOME&#xff0c;路径为jdk的主目录。 而后打开bin目录下的startup.bat文件出现如下窗口说明配置成功 idea继承tomcat服务器 使用java开发…...

AI时代编程新宠!如何让孩子成为未来的编程大师?

文章目录 一、了解编程的基础概念二、选择适合的编程工具三、激发孩子的兴趣四、注重基础能力的培养五、提供实践机会六、鼓励孩子与他人合作七、持续支持与鼓励《信息学奥赛一本通关》本书定位内容简介作者简介目录 随着科技的迅猛发展&#xff0c;编程已经从一种专业技能转变…...

Qt 中Json的构造和解析简单例子

概述: Qt中使用Json比较方便&#xff0c;不像纯C需要导入CJson RapidJson JsonCpp等第三方的库&#xff0c;主要使用到QJsonDocument、QJsonObject对象即可 1、如何构造一个json字符串 假如我们需要构造 {"cmd":"1001","data":{"content&q…...

CSS特性

小技巧&#xff1a;在调试工具中&#xff0c;css样式上看层叠&#xff0c;下看继承。 1、层叠性 相同的属性会被覆盖&#xff0c;不同的属性会叠加 2、继承性 3、优先级 基于不同种类的选择器的匹配规则。 通配符 < 标签 < 类选择器 < id选择器 < 行内样式 <…...

springcloud:3.1介绍雪崩和Resilience4j

灾难性雪崩效应 简介 服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。 原因 1.服务提供者不可用(硬件故障、程序bug、缓存击穿、用户大量请求) 2.重试加大流量(用户重试,代码逻辑重试) 3.服…...

实现定时器的两种方法:使用windows api定时器 和使用c++11/14 定时器

前言&#xff1a; 当我有一个开发需求&#xff0c;符合下面的条件 1.需要某个任务在程序中每隔一段时间就要执行一次&#xff0c;可能把这个任务封装成了一个函数。 2.这种需要定时执行的任务&#xff0c;有2个&#xff0c;3个....越来越多。 这个时候我们就可以考虑使用定时…...

H5:图像标签和路径

目录 一.前言 二.正文 1.图像标签 注意: 2.路径 Ⅰ.目录文件夹和根目录 Ⅱ.路径 三.结语 一.前言 本篇介绍有关标签和路径&#xff0c;关于图像标签我们来看看有什么需要注意的。 二.正文 1.图像标签 在HTML标签中&#xff0c;img标签用于定义HTML页面中的图像。 <im…...

AI学习(5):PyTorch-核心模块(Autograd):自动求导

1.介绍 在深度学习中&#xff0c;自动求导是一项核心技术&#xff0c;它使得我们能够方便地计算梯度并优化模型参数。PyTorch 提供了一个强大的自动求导模块(Autograd)&#xff0c;它可以自动计算张量的导数得出梯度信息&#xff0c;同时也支持高阶导数计算。 1.1 概念词 在学…...

Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读

Grid-Based Continuous Normal Representation for Anomaly Detection 论文阅读 摘要简介方法3.1 Normal Representation3.2 Feature Refinement3.3 Training and Inference 4 实验结果5 总结 文章信息&#xff1a; 原文链接&#xff1a;https://arxiv.org/abs/2402.18293 源码…...

FaceBook获取广告数据

1、访问 广告管理工具 确认自己登陆的账号下面能看到户。 ​ 2、使用 图谱Api探索工具 生成用户短期口令 ​ 3、get请求(或者浏览器直接打开)访问&#xff1a; https://graph.facebook.com/v19.0/me?fieldsid,name, email&access_token{上一步生成的口令} ​ 4、短期…...

Redis之十:Spring Data Redis --- CrudRepository方式

SpringData Redis CrudRepository方式 Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基础 CRUD&#xff08;创建、读取、更新和删除&#xff09;操作的一个接口。在与 Redis 集成时&#xff0c;尽管 Redis 是一个键值存储系统&#xff0c;并没有像关系型…...

Spring重点记录

文章目录 1.Spring的组成2.Spring优点3.IOC理论推导4.IOC本质5.IOC实现&#xff1a;xml或者注解或者自动装配&#xff08;零配置&#xff09;。6.hellospring6.1beans.xml的结构为&#xff1a;6.2.Spring容器6.3对象的创建和控制反转 7.IOC创建对象方式7.1以有参构造的方式创建…...

代码覆盖率工具Gcovr和Fastcov的性能对比

在软件开发过程中&#xff0c;代码覆盖率工具是非常重要的&#xff0c;它可以帮助开发人员评估他们的代码覆盖情况&#xff0c;从而更好地进行测试和调试。在这方面&#xff0c;Gcovr和fastcov是两个常用的工具。本文将对这两种工具的性能进行对比分析。 首先&#xff0c;让我…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践

在 Kubernetes 集群中&#xff0c;如何在保障应用高可用的同时有效地管理资源&#xff0c;一直是运维人员和开发者关注的重点。随着微服务架构的普及&#xff0c;集群内各个服务的负载波动日趋明显&#xff0c;传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...