红帽秘笈,使用podman管理容器

本章主要介绍使用 podman 管理容器。
了解什么是容器,容器和镜像的关系
安装和配置podman
拉取和删除镜像
给镜像打标签
导出和导入镜像
创建和删除镜像
数据卷的使用
管理容器的命令
使用普通用户管理容器
对于初学者来说,不太容易理解什么是容器,这里举一个例子。想象一下,我们把系统安装在一个U盘中,此系统中安装好了MySQL。
然后我们把这个U盘插人一台正在运行的物理机上,这个物理机上并没有安装MySQL,如图27-1所示。
然后把U盘中的mysqld进程“曳”到物理机上运行。但是这个mysqld进程只能适应U盘中的系统,不一定能适应物理机上的系统。所
以,我们找一个类似气球的东西把 mysqld进程在物理机中包裹保护起来,这个mysqld进程依然适应U盘中的生态环境(系统),却可以从
物理机上吸收CPU和内存作为维持mysqld进程运行的“养分”。
那么,这个类似气球的东西就是容器,U盘就是镜像。
在Linux中安装软件包时经常会遇到各种包依赖,或者有人不会在 Linux系统(如Ubuntu、CentOS)中安装软件包。这样以后我们就不
需要安装和配置MySQL了,直接把这个“U盘”插到电脑上,然后运行一个容器出来,这样就有MySQL这个服务了。
所谓镜像,就是安装了系统的硬盘文件,这个系统中安装了想要运行的程序,如 MySQL.Nginx,并规定好使用这个镜像所生成的容器
里面运行什么进程。这里假设有一个安装了MySQL的镜像
在服务器上有一个MySQL 的镜像(已经安装好了MySQL),然后使用这个镜像生成一个容器。这个容器中只运行一个mysqld进程,容器
中的mysqld进程直接从物理机上吸收CPU和内存以维持它的正常运行。
以后需要什么应用,就直接拉取什么镜像下来,然后使用这个镜像生成容器。例如,需要对外提供
MySQL服务,那么就拉取一个MySQL镜像,然后生成一个MySQL容器。如果需要对外提供 Web服
务,那么就拉取一个Nginx镜像,然后生成一个Nginx容器。
一个镜像是可以生成很多个容器的
前面已经配置了yum源,所以这里直接使用yum install podman -y命令安装,命令如下。

[root@localhost ~]# yum -y install podman 

 查看现在系统中有多少镜像,命令如下。

 

 

没有任何输出,说明现在还没有镜像。
查看系统中有多少容器,命令如下。

 

 

没有任何输出,说明当前没有容器。 如果要拉取镜像,一般是从国外网站的镜像仓库中拉取,速度会很慢。默认podman从以下仓库中拉取镜
像:registry.access.redhat.com、registry.redhat.io、docker.io。下面配置加速器,提高从docker.io中拉取镜像的速度。
登录阿里云控制台,找到容器镜像服务,单击镜像工具→镜像加速器,找到自己的加速器地址,这里使用的是
https://frz7i079.mirror.aliyuncs.com.
修改 podman 的配置文件/etc/containers/registries.conf,修改内容如下。

 

 

这里的意思是从 docker.io中拉取镜像时使用加速器frz7i079.mirror.aliyuncs.com,注意这里不需要加https,配置好之后不需要重启什
么服务。
下面开始拉取docker.io/nginx镜像,命令如下。

 

 拉取MySQL镜像docker.io/mysql,命令如下。

网易仓库地址是https://c.163yun.com/hub#/home,在浏览器中打开此界面需要登录,然后搜索需要的镜像即可。下面从网易仓库中
拉取 CentOS镜像,命令如下。

 

步骤①:给镜像做新标签,命令如下。

[root@localhost ~]# podman tag hub.c.163.com/library/mysql 192.168.149.88/rhce/mysql:v2 

步骤②:再次查看镜像,命令如下。

 

 

例如,下面要把 docker.io/library/mysql:latest删除。
步骤①:删除镜像,命令如下
[root@localhost ~]# podman rmi hub.c.163.com/library/mysql:latest

 

可以看到,只是简单的一个Untagged操作,并没有任何Deleted操作。
步骤②:查看镜像,命令如下。
[root@localhost ~]# podman images

 

步骤③:删除镜像,命令如下

[root@localhost ~]# podman rmi 192.168.149.88/rhce/mysql:v2

查看镜像的结构,命令如下。

 

 步骤①:把 docker.io/nginx:latest 导出为nginx.tar,命令如下。

 删除 Nginx这个镜像,命令如下。

[root@localhost ~]# podman rmi docker.io/library/nginx

 步骤②:把nginx.tar导入为镜像,命令如下。

 查看现有镜像,命令如下。

 

 

容器就是镜像在宿主机上运行的一个实例,大家可以把容器理解为一个气球,气球中运行了一个进程,这个进程透过气球吸收物理机的
内存和 CPU 资源。
查看当前有多少正在运行的容器,命令如下

 运行一个最简单的容器,命令如下

 

把容器理解为人的肉体,里面运行的进程理解为人的灵魂。如果人的灵魂宕机了,肉体也就宕机了,只有灵
魂正常运行,肉体才能正常运行
同理,只有容器中的进程正常运行,容器才能正常运行,容器中的进程宕机了,容器也就宕机了。因为没有终
端的存在,/bin/bash就像执行ls命令一样一下就执行完了,所以容器生命期也就到期了。
如果把这个bash附着到一个终端上,这个终端一直存在,bash就一直存在,那么是不是容器就能一直存活了
呢?
步骤①:删除刚才的容器,命令如下。
[root@localhost ~]# podman rm c5fd16899168

 

重新创建新的容器,加上-i -t选项,可以写作-it或-i-t。
(1)-t:模拟一个终端。
(2)-i:可以让用户进行交互,否则用户看到一个提示符之后就卡住不动了。
步骤②:创建一个容器,命令如下。

 创建好容器之后就自动进入容器中了,可以通过exit退出容器,命令如下。

 

但是一旦退出容器,容器就不再运行了。
步骤③:删除此容器,命令如下。
如果希望创建好容器之后不自动进入容器中,可以加上-d选项。
步骤④:再次创建一个容器,命令如下。

 

 因为加了-d选项,所以创建好容器之后并没有自动进入容器中。进入此容器中,命令如下。

可以看到,只要退出来容器就会自动关闭。
步骤⑤:删除此容器,命令如下。

 

在运行容器时加上--restart=always选项可以解决退出容器自动关闭的问题。
步骤6:创建容器,增加--restart=always选项,命令如下。

 进入容器并退出,命令如下

 

可以看到,容器依然是存活的。
步骤⑦:删除此容器,因为容器是运行的,所以需要加上-f选项,命令如下。

 

每次删除容器时,都要使用容器ID,这种方式比较麻烦,在创建容器时可以使用--name选项指定容器名。
步骤⑧:创建容器,使用--name 选项指定容器的名称。

这样容器的名称为c1,以后管理起来比较方便,如切换到容器,然后退出,命令如下。

 

 步骤⑨:删除此容器,命令如下。

如果要临时创建一个测试容器,又怕用完忘记删除它,可以加上--rm选项。
创建临时容器,命令如下。

 

创建容器时,容器中运行的是什么进程,都是由镜像中的CMD指定的。如果想自定义容器中运行的进程,可以在创建容器的命令最后指
定,如下所示。

 

 

外部主机(本机之外的其他主机)是不能和容器进行通信的,如果希望外部主机能访问到容器的内容,就
需要使用-p选项将容器的端口映射到物理机上,以后访问物理机对应的端口就可以访问到容器了,如图
语法如下。
-p N:物理机随机生成一个端口映射到容器的端口N上。
-p M:N:把容器的端口N映射到物理机指定的端口M上。
步骤①:创建一个名称为web的容器,把容器的端口80映射到物理机的一个随机端口上,命令如

 这里把 web容器的端口80映射到物理机的随机端口上,这个端口号可以通过如下命令来查询

 删除此容器,命令如下

 步骤②:如果想映射到物理机指定的端口上,命令如下

删除此容器,命令如下。

[root@localhost ~]# podman rm -f web 

 步骤①:创建容器,命令如下。

 

步骤②:做连接测试。
查看db容器的IP,命令如下。

 在宿主机上用 yum命令安装MariaDB客户端(命令是yum -y install mariadb),然后连接容器,命令如下。

[root@localhost ~]# mysql -uroot -phaha001 -h10.88.0.11

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值