云时代【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 阿里云 腾讯云) ②给镜像打标签 ③推送该镜像到仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaSE-09(Java IO精华总结)

Java IO 简单做个总结&#xff1a; 1 .InputStream/OutputStream 字节流的抽象类。2 .Reader/Writer 字符流的抽象类。3 .FileInputStream/FileOutputStream 节点流&#xff1a;以字节为单位直接操作“文件”。4 .ByteArrayInputStream/ByteArrayOutputStream 节点流&#xff…

Running job: job_1709516801756_0003

** yarn运行卡在Running job: job_1709516801756_0003问题解决&#xff1a; ** 在运行wordcount时出现错误&#xff0c;一直卡住 运行命令&#xff1a;hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output 出现错误&#xff1a…

经典思路!人参叶际微生物如何发8分文章?

中国中医科学院中药研究所在《Environmental Microbiome》期刊上(IF7.9)发表了关于叶际真菌微生态网络的文章&#xff0c;该研究通过对ITS测序结果和环境因子测定结果以及皂苷含量测定结果进行生信分析&#xff0c;提出了维持微生态网络的稳定性策略和影响皂苷含量的因素。 期刊…

H12-821_113

113.如图所示是路由器现ATE输出的部分信息&#xff0c;以下关于这部分信息的描述&#xff0c;错误的是哪一项&#xff1f; A.display pim rp-info命令用来查看组播组对应的RP信息 B.RP地址是2.2.2.2 C.组地址是225.0.0.0 D.RP的优先级是0 答案&#xff1a;C 注释&#xff1a; …

HCIA-Datacom题库(自己整理分类的)_29_PPP协议判断【6道题】

1.数据链路层采用PPP封装链路两端的IP地址可以不在同一个网段。√ 2.PPP链路两端不在同一网段不能通信。 3.参考以下拓扑及配置&#xff0c;路由器R1与R2通过Serial低速线缆连接&#xff0c;且数据链路层封装使用PPP。当R1和R2的Holdtime不一致时&#xff0c;PPP协商失败&…

爬虫实战——麻省理工学院新闻

文章目录 发现宝藏一、 目标二、 浅析三、获取所有模块四、请求处理模块、版面、文章1. 分析切换页面的参数传递2. 获取共有多少页标签并遍历版面3.解析版面并保存版面信息4. 解析文章列表和文章5. 清洗文章6. 保存文章图片 五、完整代码六、效果展示 发现宝藏 前些天发现了一…

MySQL面试题-日志(答案版)

日志 1、为什么需要 undo log&#xff1f; &#xff08;1&#xff09;实现事务回滚&#xff0c;保障事务的原子性。 事务处理过程中&#xff0c;如果出现了错误或者用户执 行了 ROLLBACK 语句&#xff0c;MySQL 可以利用 undo log 中的历史数据将数据恢复到事务开始之前的状态…

ssh无法直接登入Linux超级用户root(23/3/3更新)

说明&#xff1a;不允许ssh用超级用户的身份登入是为了安全性&#xff0c;如果只是学习使用对安全性没啥要求可以按以下操作解除限制 以普通用户登录到服务器后&#xff0c;执行以下命令以编辑 SSH 服务器配置文件 /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config 此时会…

【C++练级之路】【Lv.10】【STL】priority_queue类和反向迭代器的模拟实现

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 一、仿函数1.1 仿函数的介绍1.2 仿函数的优势 二、priority_queue2.1 push2.2 pop2.3 top2.4 size2.5 empty 三、…

【3D Slicer】心脏CT图像分割操作保姆级教程 Cardiac CT image segmentation

心脏CT图像分割操作流程指南 1 安装3D Slicer软件2 打开文件2.1 从File->Add Data->Choose File2.2 直接拖入 3 进行分割操作4 切片填充 Fill between slices5 第二个例子6 数据保存7 打开保存后的文件 1 安装3D Slicer软件 方式二选一 1.官网&#xff1a;3D Slicer 2.百…

无字母数字rce总结(自增、取反、异或、或、临时文件上传)

目录 自增 取反 异或 或 临时文件上传 自增 自 PHP 8.3.0 起&#xff0c;此功能已软弃用 在 PHP 中&#xff0c;可以递增非数字字符串。该字符串必须是字母数字 ASCII 字符串。当到达字母 Z 且递增到下个字母时&#xff0c;将进位到左侧值。例如&#xff0c;$a Z; $a;将…

Java中的Object类详解

Java中的Object类详解 1. equals(Object obj)2. hashCode()3. toString()4.getClass()5.notify() 和 notifyAll()6. wait() 和 wait(long timeout)7. clone()8.finalize() Java中的 Object 类是所有类的父类&#xff0c;可以被所有Java类继承并使用。下面先看下源码&#xff1a…

google最新大语言模型gemma本地化部署

Gemma是google推出的新一代大语言模型&#xff0c;构建目标是本地化、开源、高性能。 与同类大语言模型对比&#xff0c;它不仅对硬件的依赖更小&#xff0c;性能却更高。关键是完全开源&#xff0c;使得对模型在具有行业特性的场景中&#xff0c;有了高度定制的能力。 Gemma模…

面试数据库篇(mysql)- 12分库分表

拆分策略 垂直分库 垂直分库:以表为依据,根据业务将不同表拆分到不同库中。 特点: 按业务对数据分级管理、维护、监控、扩展在高并发下,提高磁盘IO和数据量连接数垂直分表:以字段为依据,根据字段属性将不同字段拆分到不同表中。 特点: 1,冷热数据分离 2,减少IO过渡争…

【Micropython基础】TCP客户端与服务器

文章目录 前言一、连接Wifi1.1 创建STA接口1.2 激活wifi接口1.3 连接WIFI1.4 判断WIFI是否连接1.5 连接WIFI总体代码 二、创建TCP 客户端2.1 创建套接字2.2 设置TCP服务器的ip地址和端口2.3 连接TCP服务器2.3 发送数据2.4 接收数据2.5 断开连接2.6 示例代码 三、TCP服务器的创建…

批量二维码的教程和优势:拓宽应用领域,提升效率与创新

随着二维码技术的不断发展&#xff0c;批量二维码在多个领域展现出了显著的优势&#xff0c;为商业和行业带来了更多便捷和创新。以下是批量二维码的一些显著优势&#xff1a; 1. 高效快速生成&#xff1a; 批量二维码一次性生成多个二维码&#xff0c;相较于逐个生成的方式&…

Linux之进程信号

目录 一、概念引入 1、生活中的信号 2、Linux中的信号 二、信号处理常见方式 三、信号的产生 1、键盘产生信号 2、系统调用接口产生信号 3、软件条件产生信号 4、硬件异常产生信号 四、信号的保存 相关概念 信号保存——三个数据结构 信号集——sigset_t 信号集操…

超简单的chatgpt-next-web部署教程!

随着AI的应用变广&#xff0c;各类AI程序已逐渐普及&#xff0c;尤其是在一些日常办公、学习等与撰写/翻译文稿密切相关的场景&#xff0c;大家都希望找到一个适合自己的稳定可靠的ChatGPT软件来使用。 ChatGPT-Next-Web就是一个很好的选择。它是一个Github上超人气的免费开源…

Docker基础教程 - 1 Docker简介

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 1 Docker简介 Docker是一个强大的容器化平台&#xff0c;让你能够更轻松地构建、部署和运行应用程序。 下面我们来学习 Docker。 1.1 Docker是什么 1 现在遇到的问题 每次部署一台服务器&…

彻底解决华为手机安装谷歌框架后出现未认证的弹窗问题

引言 本人使用华为手机通过B站等平台学习如何安装谷歌框架与商店后&#xff0c;发现安装谷歌框架后出现未认证的弹窗问题少有解决办法&#xff0c;而且容易复发&#xff0c;在借鉴相关视频后找到解决办法&#xff0c;但视频中的华谷框架需要付费才能使用&#xff0c;本文将提出…