目录
一 容器技术简介
1.1容器定义
容器技术的兴起源于PaaS技术的普及,PaaS(平台即服务,把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供服务),简单来说,比如我想部署webserver、mysql、sqlserver等,直接部署会耗费大量的时间和资源,但是利用容器技术直接拉取镜像进行部署,更能快速的搭建部署自己的应用平台。容器提供一个轻型隔离环境,使应用更易于开发、部署和管理 。
容器可以快速的启动和停止,因此适用于快速适应不断变化的需求的应用。容器的轻型性质使得他们成为一种有用的工具,可以提供基础结构的密度和利用率。
1.2 容器与虚拟机
在这里,我不曾又想到了虚拟机,虚拟机是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用,早期,这样可以最大程度上提供虚拟化管理的灵活性。各种操作系统的虚拟机都能通过虚拟化的方式来部署、允许、终止。但是,随着时间的推移,每个虚拟机都要允许一个完整的操作系统以及其中安装好的大量应用程序,但是在实际开发环境中,我们更关注自己部署的应用程序,如果我们每次部署都要搞一个完整的操作系统和附带的依赖环境,那么这个任务和性能会很低下。
基于上述情况,人们就在想,有没有其他什么方式能让人更加的关注应用程序本身,底层多余的操作系统和环境我可以共享和复用?换句话来说,那就是我部署一个服务运行好后,我再想移植到另外一个地方,我可以不用再安装一套操作系统和依赖环境。这就像集装箱运载一样,我把货物一辆兰博基尼跑车(好比开发好的应用APP),打包放到一容器集装箱里,它通过货轮可以轻而易举的从上海码头(CentOS7.2环境)运送到纽约码头(Ubuntu14.04环境)。而且运输期间,我的兰博基尼(APP)没有受到任何的损坏(文件没有丢失),在另外一个码头卸货后,依然可以完美风骚的赛跑(启动正常)。所以容器技术又被称为集装箱技术。
//这里引用了一下一个大哥的博客,他写的太好了,更多有关容器的技术大家可以关注顺其自然的博客容器技术详解

1.3 容器特性
- 容器的可移植性好,可以容易的从一个环境转移到另一个环境
- 可以保存容器的多个版本,根据需要快速访问某个版本
- 容器通常是临时的,可将容器生成的数据永久保存
- 容器通常是在需要时允许,不允许的时候可以关掉
1.4 容器核心技术
- 隔离技术
就像集装箱一样,一个个应用程序(容器)之间存在边界,容器只是允许在宿主机上的一种特殊的进程,每个容器之间使用的是同一个宿主机的操作系统内核。比如我有一个http的镜像,我进去http容器后,就是http的进程文件。
- 限制技术
通过cgroups技术,是用来制造约束的主要手段,cgroups能限制一个进程组能够使用的资源上限、包括cpu、内存、磁盘、网络带宽等等。
通过mount -t cgroups命令可以查看什么允许什么进程能使用什么资源

1.5 Podman 下一代容器
docker因为种种原因,不太行了,然后引进一个替代产品:Podman,podman是一个用于处理容器的开源linux工具,是一个无守护进程容器引擎,也意味着可以脱离docker daemon,不需要执行systemctl start docker。

包含podman、skopeo等一整天管理工具。如下:
- Podman:Pod和容器镜像管理器,之间管理容器和容器镜像
- Buildah:容器镜像生成器,可以创建新的容器镜像
- Skopeo:容器镜像检查管理器,可以使用他检查、复制、删除和签名imag
- Runc:容器运行器和特性构建器,并传递给Podman和Buildah
- Crun:可选运行时,为Rootless容器提供更大的灵活性、控制和安全性
值得可喜的是,podman的大部分命令和docker比较类似,山东科技大学大学网络工程专业大三上学期有节课叫云与虚拟化,是专门来讲docker的。
二 配置部署Podman容器
2.1 安装容器相关软件
接下来说正事:
2.1.1 安装容器相关软件container-tools
开启lab环境,进行初始化,这个workstation就可以理解为容器仓库

安装containers-tools
yum-y module install container.lab
可通过podman -v检查podman版本号,1.9.3才是正确的

2.1.2 配置容器注册表以及镜像加速
安装完containers-tools后,需要配件镜像加速器,使Podman默认源由红帽的镜像源优先从国内的docker.io源
注释掉31行内容

将35行的dicker.io移到最前面,这样就优先选择docker.io

2.1.3 登录容器注册表服务器
我们随便建一个用户,是登录不进去podman的

root用户的家目录里有这些东西

再看看student,也这些东西

所以,这些东西才是你能登录进podman的关键,为什么root和student有呢,因为初始化的时候添加的,具体如图所示:

将.config/containers/registries.conf拷贝到lmy的家目录下面
cp .config/containers/registries.conf /home/lmy/.config/containers

检查:

登录:

lmy用户登录podman成功 !!
2.2 镜像使用
2.2.1 搜索镜像
搜索nginx镜像
podman search nginx

搜索整个容器注册表注册服务由哪些镜像
podman search registry.lab。example.com

2.2.2 下载拉取镜像
podman pull 镜像名

2.2.3 查看镜像
podman images
2.2.4 查看镜像的详细信息
podman inspect 镜像名字

删除镜像
podman rmi 镜像名

2.3 容器管理和使用
2.3.1 创建容器
podman create -d --name 容器名称 -v 主机目录:虚拟目录:Z 镜像名称
-d 后天运行
-v 将主机的目录映射到容器指定目录
:Z 将容器目录映射到主机

2.3.2 查看容器
仅仅将容器创建,但是还没有运行
通过podman ps,没有显示

podman ps-a 也只显示create状态

对应creat创建的容器,可以通过podmna start 容器名字进行开启运行

可通过podman exec -it 容器名称 /bin/bash
进入这个容器的交互式界面

查看/var/log/journal下面有没有和主机映射的文件,当然有

2.3.3 运行容器
也可以通过podman run -d -name 容器名称
进行创建容器,这样做能结合拉取镜像,创建容器,运行容器
将本机的8081端口映射到容器的8080端口

查看本机8081端口已经开启,listen状态



2.3.4 基于容器运行系统命令
交互式进入bash工作环境中执行命令
执行在/var/www/html/index.html文件里输入“hello vrlab”

直接通过执行命令的方式


2.3.5 停止和删除容器
podman stop 容器名

podman rm 容器名
692

被折叠的 条评论
为什么被折叠?



