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

news2024/11/16 9:24:23

云时代【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@IP

lxc-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 [镜像]:[版本号] # denied

docker 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.3

docker push lllzxx/fortest -a

image.png
image.png

docker search nginx
docker search --no-trunc nginx

image.png

docker logout

image.png

(2)镜像指令(部分)
docker images

docker image ls

docker image list

image.png

docker images nginx

image.png
image.png

docker image inspect nginx:1.23.4

docker image inspect 'IMAGE ID'

image.png
image.png

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

image.png

(3)容器指令(部分)
docker ps

docker 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.4

netstat -ntlp | grep 80

docker 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 bash

docker 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.html

curl 127.0.0.1.8082

image.png

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

image.png

mv busybox-x86_64 busybox

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

ls -l busybox # ll busybox (ls-list)

image.png

./busybox

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

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

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

相关文章

C---输入5个字符串,找出最长字符串并输出

从键盘输入5个字符串&#xff0c;找出最长的字符串并输出该字符串 例&#xff1a; 输入&#xff1a;123 1234 werere1234 12 123 输出&#xff1a;werere1234 #include <stdio.h> #include <string.h>int main() {char strings[5][80]; // 存储5个字符串&#x…

界面控件DevExpress .NET MAUI v23.2新版亮点 - 拥有全新的彩色主题

DevExpress拥有.NET开发需要的所有平台控件&#xff0c;包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress 今年第一个重要版本v23.1正式发布&#xff0c;该版本拥有众多…

记录SSM项目集成Spring Security 4.X版本 之 加密验证和记住我功能

目录 前言 一、用户登录密码加密认证 二、记住我功能 前言 本次笔记的记录是接SSM项目集成Spring Security 4.X版本 之 加入DWZ,J-UI框架实现登录和主页菜单显示-CSDN博客https://blog.csdn.net/u011529483/article/details/136255768?spm1001.2014.3001.5502 文章之后补…

腾讯云幻兽帕鲁服务器使用Linux和Windows操作系统,对用户的技术要求有何不同?

腾讯云幻兽帕鲁服务器使用Linux和Windows操作系统对用户的技术要求有何不同&#xff1f; 首先&#xff0c;从操作界面的角度来看&#xff0c;Windows操作系统相对简单易操作&#xff0c;适合那些偏好使用图形化界面操作的用户。而Linux操作系统则需要通过命令行完成&#xff0…

springboot基于保信息学科平台系统设计与实现论文

基于保密信息学科平台系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了基于保密信息学科平台系统的开发全过程。通过分析基于保密信息学科平台系统管理的不足&#xff0c;创建了一个计算机管理基于保密信息…

MySQL:开始深入其数据(二)DQL

在初识MySQL中我们就知道了DQL只有一个关键字select。 可是数据库管理中我们用的最多的就是查询&#xff0c;为了方便我们使用&#xff0c;MySQL定义了大量关键字给我们使用&#xff0c;泪目。 文章目录 DQLselect语法指定查询字段where条件语句逻辑操作符比较操作符between a…

1.亿级积分数据分库分表:总体方案设计

项目背景 以一个积分系统为例&#xff0c;积分系统最核心的有积分账户表和积分明细表&#xff1a; 积分账户表&#xff1a;每个用户在一个品牌下有一个积分账户记录&#xff0c;记录了用户的积分余额&#xff0c;数据量在千万级积分明细表&#xff1a;用户每次积分发放、积分扣…

基于springboot+vue的在线考试与学习交流平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

猫猫与数列

来源&#xff1a;牛客网 示例1 输入 2 2 输出 5 示例2 输入 999999998 2 输出 3 示例3 输入 10 18 输出 3 #include <bits/stdc.h>#define endl \n using ll long long; typedef unsigned long long ull; using namespace std; void GordenGhost(); l…

科技企业如何做到FTP数据安全保护

在数字化浪潮的推动下&#xff0c;科技企业的数据已成为推动创新、提升效率、增强竞争力的核心资源。数据的重要性不言而喻&#xff0c;它不仅包含了客户信息、市场分析、产品设计等关键信息&#xff0c;更是企业宝贵的资产。然而&#xff0c;随着数据量的激增&#xff0c;数据…

《PyTorch深度学习实践》第十二讲循环神经网络基础

一、RNN简介 1、RNN网络最大的特点就是可以处理序列特征&#xff0c;就是我们的一组动态特征。比如&#xff0c;我们可以通过将前三天每天的特征&#xff08;是否下雨&#xff0c;是否有太阳等&#xff09;输入到网络&#xff0c;从而来预测第四天的天气。 我们可以看RN…

数据结构从入门到精通——顺序表

顺序表 前言一、线性表二、顺序表2.1概念及结构2.2 接口实现2.3 数组相关面试题2.4 顺序表的问题及思考 三、顺序表具体实现代码顺序表的初始化顺序表的销毁顺序表的打印顺序表的增容顺序表的头部/尾部插入顺序表的头部/尾部删除指定位置之前插入数据和删除指定位置数据顺序表元…

MySQL 主从读写分离入门——基本原理以及ProxySQL的简单使用

一、读写分离工作原理 读写分离的工作原理&#xff1a;在大型网站业务中&#xff0c;当单台数据库无法满足并发需求时&#xff0c;通过主从同步方式同步数据。设置一台主服务器负责增、删、改&#xff0c;多台从服务器负责查询&#xff0c;从服务器从主服务器同步数据以保持一…

【ArcGIS】渔网分割提取栅格图+网格化分析图绘制

ArcGIS按渔网分割提取栅格图并绘制网格化分析图 准备数据操作步骤步骤1&#xff1a;创建渔网&#xff08;Create Fishnet&#xff09;步骤2&#xff1a;栅格数据处理步骤3&#xff1a;栅格插值步骤4&#xff1a;数据关联 参考 网格化的目的是让各个数据更加标准化的进行统计。因…

FlinkSQL ChangeLog

01 Changelog相关优化规则 0101 运行upsert-kafka作业 登录sql-client&#xff0c;创建一个upsert-kafka的sql作业&#xff08;注意&#xff0c;这里发送给kafka的消息必须带key&#xff0c;普通只有value的消息无法解析&#xff0c;这里的key即是主键的值&#xff09; CREA…

linux系统Jenkins工具参数化构建

Jenkins参数化构建 web服务器jenkins服务器编写主机清单编写脚本代码 jenkins服务web页面操作 web服务器 下载nginx 下载gitcd /usr/share/nginxrm -rf htmlgit clone http://root:Qq123456192.168.188.176/ximu/test-nginx.gitmv test-nginx/ htmljenkins服务器 下载ansible…

前端Vue自定义勾选协议组件的开发与应用

摘要&#xff1a; 随着前端技术的不断发展&#xff0c;用户体验成为了软件开发中的关键要素。在登录、注册等场景中&#xff0c;勾选协议是常见的需求。本文旨在介绍一款基于 Vue.js 的自定义勾选协议组件的开发与应用&#xff0c;该组件适用于多种场景&#xff0c;并且具备良…

虚拟机部署Sentry步骤,国内地址

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

【计算机网络】TCP 如何实现可靠传输

TCP通过三次握手建立连接&#xff0c;四次挥手释放连接&#xff0c;确保连接建立和连接释放的可靠。 序列号、检验和、确认应答信号、重发机制、连接管理、窗口控制、流量控制、拥塞控制 标准回答 可靠传输就是通过TCP连接传送的数据是没有差错、不会丢失、不重复并且按序到达的…

【C++ map和set】

文章目录 map和set序列式容器和关联式容器键值对setset的主要操作 mapmap主要操作 multiset和multimap map和set 序列式容器和关联式容器 之前我们接触的vector,list,deque等&#xff0c;这些容器统称为序列式容器&#xff0c;其底层为线性序列的的数据结构&#xff0c;里面存…