Linux容器基础

一、打开新的REHL8虚拟机

  1. 设置虚拟机的主机名
[root@localhost ~]# hostnamectl set-hostname rhel8.caowei.cn

[root@localhost ~]# hostname

rhel8.caowei.cn

[root@localhost ~]#···

开启一个新的终端验证

  1. 关闭所有虚拟机的SELinux
[root@rhel8 ~]# vim  /etc/selinux/config

SELINUX=disabled

  1. 设置所有虚拟机防火墙
[root@rhel8 ~]#  systemctl   stop   firewalld

[root@rhel8 ~]#  systemctl   disable   firewalld

  1. 构建Yum仓库
[root@rhel8 ~]# mkdir   /dvd

[root@rhel8 ~]# mount   /dev/cdrom     /dvd

mount: /dvd: WARNING: device write-protected, mounted read-only.

[root@rhel8 ~]# ls   /dvd

[root@rhel8 ~]# vim  /etc/yum.repos.d/dvd.repo

[haha]

name=haha

baseurl=file:///dvd/AppStream/

enabled=1

gpgcheck=0                              

[xixi]

baseurl=file:///dvd/BaseOS/。

gpgcheck=0

[root@rhel8 ~]# yum repolist -v   #显示仓库的详细信息

[root@rhel8 ~]# yum -y   install  vsftpd

  1. 构建Yum仓库,开机自动挂载
[root@rhel8 ~]# blkid /dev/cdrom

[root@rhel8 ~]#  vim   /etc/fstab

/dev/cdrom   /dvd   iso9660   defaults  0  0

[root@rhel8 ~]# umount  /dvd

[root@rhel8 ~]# ls   /dvd

[root@rhel8 ~]# mount  -a

mount: /dvd: WARNING: device write-protected, mounted read-only.

[root@rhel8 ~]# ls   /dvd       

  1. 修改网卡命名规则
[root@rhel8 ~]# ifconfig   |   head  -2

[root@rhel8 ~]# vim  /etc/default/grub

…….

GRUB_CMDLINE_LINUX="……. quiet  net.ifnames=0  biosdevname=0"·

…….

[root@rhel8 ~]#gr622-mkconfig -o /boot/grub2/grub.cfg

Generating grub configuration file ...

done

[root@rhel8 ~]# reboot    #重启系统

[root@rhel8 ~]# ls  /dvd                #显示光盘内容

[root@rhel8 ~]# ifconfig  |  head  -2   #查看网卡名称

[root@rhel8 ~]# getenforce    #查看SELinux运行模式

  1. 配置IP地址
[root@rhel8 ~]# nmcli  connection  show

[root@rhel8 ~]# nmcli  connection  delete  ens160

[root@rhel8 ~]# nmcli  connection  show



[root@rhel8 ~]# nmcli connection add type ethernet ifname eth0  con-name eth0



[root@rhel8 ~]# nmcli connection modify eth0

ipv4.method manual ipv4.addresses 192.168.4.108/24 connection.autoconnect yes



[root@rhel8 ~]# nmcli connection up eth0

[root@rhel8 ~]# ifconfig | head -2



临时配置IP地址
[root@rhel8 ~]# ifconfig  eth0  192.168.4.108/24

[root@rhel8 ~]# ifconfig  eth0  |  head  -2

模块化安装:类似于安装一组软件包

[root@rhel8 ~]# yum  module    list

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

[root@rhel8 ~]# rpm  -q  podman

  • 容器基础概述
  1. 容器基本信息
    1. Linux中的容器是装应用的
    2. 容器就是将软件打包成标准化单元,用于开发、交付和部署
    3. 容器技术已经成为应用程序封装和交付的核心技术
  • 优点
    • 相比于传统的虚拟化技术,容器更加简洁高效
    • 传统虚拟机需要给每个VM安装操作系统
    • 容器使用的共享公共库和程序
  • 镜像是启动容器的核心,镜像由镜像仓库提供
  • 在podman中容器是基于镜像启动的
  • podman和容器的关系
    • podman是完整的一套容器管理系统
    • podman提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
  • podman所需软件
    • 系统软件,位于 rhel-8.2-x86_64-dvd 源中
    • 利用系统光盘,构建Yum仓库

  1. 获取镜像
  • 镜像的名称标识
    • 每一个镜像都对应唯一的镜像 id
    • 镜像名称(姓) + 标签(名字) = 唯一
    • 每一个镜像都有标签,如果没写就是默认标签 latest
    • 我们在调用镜像的时候,如果没有指定标签也是 latest
  • 查找镜像(需要能访问互联网)
    • podman  search  关键字

podman  search  httpd

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

podman   pull   localhost/myos:latest

  • 导入镜像
    • podman  load  -i  备份文件.tar.gz
podman   load  -i  /root/httpd.tar.gz

  1. 镜像管理命令
  • 查看镜像
    • podman images
  • 删除镜像
    • podman rmi 镜像名称:镜像标签

  1. 镜像管理练习
]# 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     #查看当前有哪些镜像

REPOSITORY       TAG      IMAGE ID       CREATED         SIZE

localhost/myos   nginx    8a9042664597   11 months ago   392 MB

localhost/myos   httpd    2f2eb9bd1363   11 months ago   392 MB

localhost/myos   latest   2f57195050eb   16 months ago   392 MB

  1. 镜像删除练习
]# 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

REPOSITORY       TAG     IMAGE ID       CREATED         SIZE

localhost/myos   httpd   2f2eb9bd1363   11 months ago   392 MB

生成容器之前,RHEL8.2必须必备一个文件

[root@rhel8 ~]# touch  /etc/resolv.conf

  • 使用容器
  1. 容器基本命令
  • 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

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

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

  1. 容器初步练习                           
]# touch  /etc/resolv.conf

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

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

[root@2b0b7c62ab42 /]# useradd dc

[root@2b0b7c62ab42 /]# id  dc

[root@2b0b7c62ab42 /]# exit

]# podman ps  -a    #查看所有的容器
  1. 容器放入后台练习
]# podman run --name nsd01  -d localhost/myos:httpd



]# podman  ps  -a

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



[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  ps  -a

[root@rhel8 ~]# podman stop  nsd01   #停止容器

[root@rhel8 ~]# podman  rm -f  nsd01

[root@rhel8 ~]# podman  ps  -a

四、容器进阶-对外发布容器服务

  • 容器可以与宿主机的端口进行绑定
  • 从而把宿主机变成对应的服务,不用关心容器的IP地址
  • 我们使用 -p 参数把容器端口和宿主机端口绑定
  • 同一宿主机端口只能绑定一个容器服务
  • -p  [可选IP]:宿主机端口:容器端口
  • 例如:把宿主机变成 apache

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

  • 例如:把宿主机变成 nginx

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

  1. 容器放入后台,端口绑定练习
]# podman run --name nsdweb -p 80:80    -d   localhost/myos:httpd   

]# podman ps -a

]# podman exec -it nsdweb /bin/bash



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

[root@5b69bf6956b0 html]# exit

exit

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

wo shi nsdweb

[root@rhel8 ~]#  

五、容器进阶-容器共享卷

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

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

  1. 容器终极练习
]# podman rm -f   nsdweb        #强制删除容器

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



[root@rhel8 ~]# podman  ps  -a

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

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

wo shi niuniubenben

[root@rhel8 ~]#             

六、容器进阶-管理系统服务

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

--files:生成文件类型

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

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

systemctl  daemon-reload

用户---->systemd---->服务启动配置文件--->/usr/sbin/httpd

用户--->systemd--->服务启动配置文件--->podman start  容器名字

容器必须是开启的状态

  1. 容器之光练习(必须是相对路径,当前路径必须是/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        #重新加载服务配置文件



]# podman  stop rqweb   #必须手动停止

]# podman ps -a



]# systemctl start container-rqweb  

]# podman ps -a

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值