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

2024-03-02 10:52
文章标签 容器 时代 lxc

本文主要是介绍云时代【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 与 容器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/765878

相关文章

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

容器编排平台Kubernetes简介

目录 什么是K8s 为什么需要K8s 什么是容器(Contianer) K8s能做什么? K8s的架构原理  控制平面(Control plane)         kube-apiserver         etcd         kube-scheduler         kube-controller-manager         cloud-controlle

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。以下是从八个关键方面提出的策略,旨在帮助无人机培训机构在内卷时代中稳步前行。 1. 精准定位市场需求 深入研究市场:通过市场调研,了解无人机行业的最新趋势、政策导向及未来发展方向。 明确目标

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

Spring容器上下文

目录 一 什么是spring容器上下文 二 spring容器上下文可以做什么 三 如何使用 1.实现ApplicationContextAware接口 2.代码测试 一 什么是spring容器上下文 你可以把它理解成就是spring容器,它主要用于管理Bean对象,包括bean的生命周期,bean的注入等等。 二 spring容器上下文可以做什么 我们刚刚上面

Java 入门指南:Java 并发编程 —— 并发容器 ConcurrentLinkedDeque

文章目录 ConcurrentLinkedDeque特点构造方法常用方法使用示例注意事项 ConcurrentLinkedDeque ConcurrentLinkedDeque 是 Java 并发工具包(java.util.concurrent 包)中的一个线程安全的双端队列(Deque)实现,实现了 Deque 接口。它使用了链表结构,并且针对高并发环境进行了优化,非常适合

Docker 容器技术:简化 MySQL 主从复制部署与优化

Docker 容器技术:简化 MySQL 主从复制部署与优化 引言 随着大数据和云计算的快速发展,数据库的高可用性、可扩展性和易维护性成为了企业IT架构中的重要考量因素。MySQL 作为一款流行的开源数据库管理系统,其主从复制(Master-Slave Replication)功能为实现数据备份、故障恢复、读取扩展和数据分析提供了强有力的支持。然而,传统的 MySQL 主从复制部署过程复杂且容

Docker进入容器并运行命令

在讨论如何使用Docker进入容器并运行命令时,我们需要先理解Docker的基本概念以及容器的工作原理。Docker是一个开放平台,用于开发、交付和运行应用程序。它使用容器来打包、分发和运行应用程序,这些容器是轻量级的、可移植的、自包含的,能够在几乎任何地方以相同的方式运行。 进入Docker容器的几种方式 1. 使用docker exec命令 docker exec命令是最常用的进入正在运

Qt-常用控件(3)-多元素控件、容器类控件和布局管理器

1. 多元素控件 Qt 中提供的多元素控件有: QListWidgetQListViewQTableWidgetQTableViewQTreeWidgetQTreeView xxWidget 和 xxView 之间的区别,以 QTableWidget 和 QTableView 为例. QTableView 是基于 MVC 设计的控件.QTableView 自身不持有数据,使用 QTab