容器基础概述

  1. Linux中的容器是装应用的
  2. 容器就是将软件打包成标准化单元,用于开发、交付和部署
  3. 容器技术已经成为应用程序封装和交付的核心技术
  • 优点
    • 相比于传统的虚拟化技术,容器更加简洁高效
    • 传统虚拟机需要给每个VM安装操作系统
    • 容器使用的共享公共库和程序
  • 镜像是启动容器的核心,镜像由镜像仓库提供
  • 在podman中容器是基于镜像启动的

  • podman和容器的关系
    • podman是完整的一套容器管理系统
    • podman提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术

  • podman所需软件
    • 系统软件,位于 rhel-8.2-x86_64-dvd 源中
    • 利用系统光盘,构建Yum仓库

[root@localhost ~]# yum -y module install container-tools

1.获取镜像

  • 镜像的名称标识
    • 每一个镜像都对应唯一的镜像 id
    • 镜像名称(文件名称) + 标签(路径) = 唯一

  • 每一个镜像都有标签,如果没写就是默认标签 latest
  • 我们在调用镜像的时候,如果没有指定标签也是 latest
  • 查找镜像(需要能访问互联网)
    • podman  search  关键字

            podman  search  httpd

  • 下载镜像(需要能访问互联网)
    • podman  pull  镜像名称:标签

              podman   pull   localhost/myos:latest

2.导入镜像

  • podman  load  -i  备份文件.tar.gz

podman   load  -i  /root/httpd.tar.gz

3.镜像管理命令

  • 查看镜像
    • podman images
  • 删除镜像
    • podman rmi 镜像名称:镜像标签

4.镜像管理练习

]# podman images     #查看当前有哪些镜像

]# podman  load   -i   /root/httpd.tar.gz       #导入镜像

]# podman images     #查看当前有哪些镜像

]# podman load  -i   /root/nginx.tar.gz          #导入镜像

]# podman load  -i   /root/myos.tar.gz            #导入镜像

]# podman images     #查看当前有哪些镜像

5.镜像删除练习

]# podman  images           #查看当前有哪些镜像

]# podman   rmi   2f5        #按照镜像的ID值,删除镜像

]# podman  images           #查看当前有哪些镜像

]# podman load  -i   /root/myos.tar.gz            #导入镜像

]# podman  images           #查看当前有哪些镜像

]# podman   images

]# podman   rmi    localhost/myos:nginx    #删除镜像

]# podman   images

]# podman rmi  localhost/myos:latest      #删除镜像

]# podman   images

6.使用容器

podman run 命令

  • podman  run  -选项   镜像名称:镜像标签   启动命令

查看 run 的选项

  • podman  help  run
  • man  podman-run 

run  =  创建 + 启动 + 进入

podman run 命令的选项

  • 选项 -i,交互式
  • 选项 -t,终端
  • 选项 -d,后台运行
  • 选项 --name  容器名字

启动容器,并进入容器

podman run -it myos:latest /bin/bash

可以通过命令行提示符,判定自己是否进入容器了

7.容器管理命令

  • 启动容器
    • podman run –选项 镜像名称:镜像标签 启动命令
  • 查看容器
    • podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]
  • 删除容器
    • podman rm 容器id
  • 容器管理命令启动、停止、重启
    • podman start|stop|restart 容器id
  • 进入容器
    • podman  exec   -it  容器id   启动命令

8.容器初步练习                            

]# touch  /etc/resolv.conf

]# podman run -it   localhost/myos:httpd   /bin/bash

[root@2b0b7c62ab42 /]# cat /etc/redhat-release

[root@2b0b7c62ab42 /]# useradd dc

[root@2b0b7c62ab42 /]# id  dc

[root@2b0b7c62ab42 /]# exit

[root@rhel8 ~]# podman  ps   -a        #查看当前系统容器

[root@rhel8 ~]# podman  start  2b    #利用容器id开启容器

[root@rhel8 ~]# podman exec -it   2b /bin/bash   #进入容器

[root@2b0b7c62ab42 /]# id dc

[root@2b0b7c62ab42 /]# exit

[root@rhel8 ~]# podman  ps   -a

[root@rhel8 ~]# podman stop   2b    #利用容器id停止容器

[root@rhel8 ~]# podman  ps   -a       

[root@rhel8 ~]# podman  rm   2b      #利用容器id删除容器

[root@rhel8 ~]# podman  ps   -a

9.容器放入后台练习 

]# podman run --name abc01  -d localhost/myos:httpd 

]# podman  ps  -a

]# podman  exec  -it   abc01  /bin/bash  #进入abc01容器

[root@962aa837e17b html]# cd /

[root@962aa837e17b /]# useradd tc

[root@962aa837e17b /]# id tc

uid=1000(tc) gid=1000(tc) groups=1000(tc)

[root@962aa837e17b /]# exit

[root@rhel8 ~]# podman  stop  abc01

[root@rhel8 ~]# podman  rm abc01

[root@rhel8 ~]# podman  ps  -a

10.容器进阶-对外发布容器服务

  • 容器可以与宿主机的端口进行绑定
  • 从而把宿主机变成对应的服务,不用关心容器的IP地址

  • 我们使用 -p 参数把容器端口和宿主机端口绑定
  • 同一宿主机端口只能绑定一个容器服务
  • -p  [可选IP]:宿主机端口:容器端口
  • 例如:把宿主机变成 apache

podman run -d -p 80:80 myos:httpd

  • 例如:把宿主机变成 nginx

podman run -d -p 80:80 myos:nginx

11.容器放入后台,端口绑定练习

[root@rhel8 ~]# podman run --name nsdweb -p 80:80         -d   localhost/myos:httpd    

[root@rhel8 ~]# podman ps -a

[root@rhel8 ~]# podman exec -it nsdweb /bin/bash

[root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html 

[root@5b69bf6956b0 html]# /usr/sbin/httpd   #手动启动

[root@5b69bf6956b0 html]# exit

exit

[root@rhel8 ~]# curl  http://192.168.4.100

wo shi nsdweb

12.容器进阶-容器共享卷

  • podman容器不适合保存任何数据
  • podman可以映射宿主机文件或目录到容器中
    • 目标对象不存在就自动创建
    • 目标对象存在就直接覆盖掉
    • 多个容器可以映射同一个目标对象来达到数据共享的目的
  • 启动容器时,使用 -v 映射参数

podman run -itd  -v  宿主机对象:容器内对象   镜像名称:标签

13.容器终极练习

]# podman stop   nsdweb         #停止容器

]# podman rm -f   nsdweb        #强制删除容器

]# podman run --name rqweb  -p 80:80                                  -v  /opt:/var/www/html -d  localhost/myos:httpd 

[root@rhel8 ~]# podman exec -it rqweb /bin/bash

[root@56557d6f0517 html]# /usr/sbin/httpd   #手动启动

[root@56557d6f0517 html]# exit

[root@rhel8 ~]# echo wo shi xixihaha> /opt/index.html

[root@rhel8 ~]# curl http://192.168.4.100              

wo shi xixihaha

14.容器进阶-管理系统服务

  • systemd一个更高效的系统&服务管理器
    • 开机服务并行启动,各系统服务间的精确依赖
    • 服务目录:/usr/lib/systemd/system/
    • 主要管理工具:systemctl
  • 管理员服务文件默认路径
    • /usr/lib/systemd/system/
  • 生成服务启动配置文件

--files:生成文件类型

podman  generate  systemd   --name  容器名  --files  

  • 重新加载服务启动配置文件

systemctl  daemon-reload

15.容器之光练习(必须是相对路径,当前路径必须是/usr/lib/systemd/system)

]# cd  /usr/lib/systemd/system

]# podman  ps  -a

]# podman generate systemd --name rqweb --files

]# vim container-rqweb.service

]# systemctl  daemon-reload        #重新加载服务配置文件

]# systemctl  daemon-reload

]# systemctl stop container-rqweb

]# podman ps -a

]# systemctl start container-rqweb

]# podman ps -a

]# systemctl enable container-rqweb     #设置开机自启

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值