容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署

Top

NSD SERVICES DAY04

  1. 俱往矣,数风流人物,还看今朝
  2. 设置虚拟机的主机名
  3. 测试Yum仓库
  4. SELinux与firewalld
  5. 设置命名
  6. 配置IP地址
  7. 配置虚拟机网卡的网络类型(KVM虚拟机选择private1,VMware虚拟机选项vmnet1)
  8. 常见的ssh远程管理错误:删除/root/.ssh/known_hosts
  9. 今日所需资料:podman(img.tar.xz)
  10. 模块化安装:类似于安装一组软件包
  11. 容器的优势
  12. 镜像管理
  13. 容器管理
  14. 制作镜像,方式一
  15. 制作镜像,方式二(专业)
  16. 容器进阶-对外发布容器服务
  17. 容器进阶-容器共享卷
  18. 容器进阶-管理系统服务(了解)

1 俱往矣,数风流人物,还看今朝

2 设置虚拟机的主机名

  1. [root@localhost ~]# hostnamectl set-hostname rq.tedu.cn
  2. 或者另一种设置方式
  3. [root@localhost ~]# hostname rq.tedu.cn
  4. [root@localhost ~]# echo rq.tedu.cn > /etc/hostname
  5. 开启一个新的终端验证

3 测试Yum仓库

  1. [root@rq ~]# yum repoinfo

4 SELinux与firewalld

  1. [root@rq ~]# vim /etc/selinux/config
  2. SELINUX=disabled
  3. 设置虚拟机的防火墙
  4. [root@rq ~]# yum -y remove firewalld

5 设置命名

修改网卡命名规则

  1. ]# ifconfig | head -2
  2. ]# vim /etc/default/grub
  3. …….
  4. GRUB_CMDLINE_LINUX="…………quiet net.ifnames=0 biosdevname=0"
  5. …….
  6. ]# grub2-mkconfig -o /boot/grub2/grub.cfg
  7. Generating grub configuration file ...
  8. done
  9. ]# reboot #重启系统 (开机自动挂载、SELinux、命名规则)
  10. ]# ifconfig | head -2 #查看网卡名是否是eth0
  11. ]# getenforce

6 配置IP地址

  1. [root@rq ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
  2. [root@rq ~]# nmcli connection modify eth0
  3. ipv4.method manual ipv4.addresses 192.168.88.4/24 autoconnect yes
  4. [root@rq ~]# nmcli connection up eth0
  5. [root@rq ~]# ifconfig | head -2

7 配置虚拟机网卡的网络类型(KVM虚拟机选择private1,VMware虚拟机选项vmnet1)

效果如图-1、图-2所示。

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第1张图片

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第2张图片

 

8 常见的ssh远程管理错误:删除/root/.ssh/known_hosts

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第3张图片

9 今日所需资料:podman(img.tar.xz)

真机为Linux: 虚拟机选择网络类型为private1

  1. [student@server1 ~]$ scp -r /linux-soft/s1/img.tar.xz [email protected]:/root

真机为windows: 虚拟机选择网络类型为vmnet1

Windterm进行传输

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

  1. [root@rq ~]# yum -y module install container-tools
  2. [root@rq ~]# podman --help #查看podman帮助信息
  3. 关机拍摄快照:容器安装完成

11 容器的优势

–相比于传统的虚拟化技术,容器更加简洁高效

–传统虚拟机需要给每个VM安装操作系统

–容器使用的共享公共库和程序

•镜像是启动容器的核心,镜像由镜像仓库提供

•在podman中容器是基于镜像启动的

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第4张图片

12 镜像管理

• 镜像的名称标识

方式一:每一个镜像都对应唯一的镜像 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 #查看当前有哪些镜像
  2. ]# podman load -i /root/img.tar.xz #导入镜像
  3. ]# podman images #查看当前有哪些镜像

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第5张图片

镜像删除练习01

  1. ]# podman images #查看当前有哪些镜像
  2. ]# podman rmi 60 #按照镜像的ID值,删除镜像
  3. ]# podman images #查看当前有哪些镜像
  4. ]# podman load -i /root/img.tar.xz #导入镜像
  5. ]# podman images #查看当前有哪些镜像

镜像删除练习02

  1. ]# podman images #查看当前系统可以使用的镜像
  2. ]# podman rmi localhost/rockylinux:8.6 #删除镜像
  3. ]# podman images
  4. ]# podman load -i /root/img.tar.xz #导入镜像
  5. ]# podman images

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第6张图片

13 容器管理

•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

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

容器管理命令

•启动容器

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

•查看容器

–podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]

•删除容器

–podman rm 容器id

•容器管理命令启动、停止、重启

–podman start|stop|restart 容器id

•进入容器

–podman exec -it 容器id 启动命令

容器初步练习

  1. ]# podman run --name abc01 -it   localhost/rockylinux:8.6   /bin/bash
  2. [root@2b0b7c62ab42 /]# cat   /etc/redhat-release
  3. [root@2b0b7c62ab42 /]# useradd dc
  4. [root@2b0b7c62ab42 /]# id dc
  5. [root@2b0b7c62ab42 /]# exit #退出容器
  6. [root@rq ~]# podman ps -a #查看当前系统容器
  7. [root@rq ~]# podman start abc01 #启动容器
  8. [root@rq ~]# podman exec -it abc01 /bin/bash #进入容器
  9. [root@2b0b7c62ab42 /]# id dc
  10. [root@2b0b7c62ab42 /]# exit #退出容器
  11. [root@rq ~]# podman rm -f abc01 #强制删除容器abc01

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第7张图片

 

容器放入后台练习

  1. ]# podman rm -f abc01 #强制删除容器abc01
  2. ]# podman run --name abc01 -itd localhost/rockylinux:8.6
  3. ]# podman ps -a #查看当前系统有哪些容器
  4. ]# podman exec -it abc01 /bin/bash #进入abc01容器
  5. [root@962aa837e17b /]# useradd tc
  6. [root@962aa837e17b /]# id tc
  7. [root@962aa837e17b /]# exit
  8. ]# podman ps -a #查看当前系统有哪些容器
  9. ]# podman exec -it abc01 /bin/bash #进入abc01容器
  10. [root@962aa837e17b /]# id tc
  11. [root@962aa837e17b /]# exit
  12. ]# podman ps -a #查看当前系统有哪些容器
  13. ]# podman rm -f abc01 #强制删除容器abc01

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第8张图片

 容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第9张图片

14 制作镜像,方式一

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第10张图片

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第11张图片 

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第12张图片

构建FTP服务,提供光盘内容

  1. [root@rq ~]# yum -y install vsftpd
  2. [root@rq ~]# vim  /etc/vsftpd/vsftpd.conf
  3. anonymous_enable=YES #开启匿名用户访问功能
  4. [root@rq ~]# systemctl restart vsftpd
  5. [root@rq ~]# systemctl enable vsftpd
  6. Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
  7. [root@rq ~]# mkdi r /var/ftp/dvd
  8. [root@rq ~]# mount  /dev/cdrom /var/ftp/dvd
  9. mount: /var/ftp/dvd: WARNING: device write-protected, mounted read-only.
  10. [root@rq ~]# ls /var/ftp/dvd/
  11. AppStream BaseOS EFI images isolinux LICENSE media.repo TRANS.TBL
  12. [root@rq~]#
  13. [root@rq ~]# curl  ftp://10.88.0.1/dvd/ #必须有/结尾
  14. dr-xr-xr-x 4 0 0 2048 May 15 2022 AppStream
  15. dr-xr-xr-x 4 0 0 2048 May 15 2022 BaseOS
  16. dr-xr-xr-x 3 0 0 2048 May 15 2022 EFI
  17. -r--r--r-- 1 0 0 2204 Mar 30 2022 LICENSE
  18. -r--r--r-- 1 0 0 883 May 15 2022 TRANS.TBL
  19. dr-xr-xr-x 3 0 0 2048 May 15 2022 images
  20. dr-xr-xr-x 2 0 0 2048 May 15 2022 isolinux
  21. -r--r--r-- 1 0 0 86 May 15 2022 media.repo
  22. [root@rq ~]#
  23. [root@rq ~]# ifconfig  |  head -2
  24. cni-podman0: flags=4099 mtu 1500
  25. inet 10.88.0.1 netmask 255.255.0.0 broadcast 10.88.255.255

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第13张图片

容器构建网络Yum仓库,安装常用软件

  1. [root@localhost ~]# podman run -it --name haha localhost/rockylinux:8.6 /bin/bash
  2. [root@acc4ec6e7dc3 /]# ls /etc/yum.repos.d/
  3. Rocky-AppStream.repo Rocky-HighAvailability.repo Rocky-RT.repo
  4. Rocky-BaseOS.repo Rocky-Media.repo Rocky-ResilientStorage.repo
  5. Rocky-Debuginfo.repo Rocky-NFV.repo Rocky-Sources.repo
  6. Rocky-Devel.repo Rocky-Plus.repo
  7. Rocky-Extras.repo Rocky-PowerTools.repo
  8. [root@acc4ec6e7dc3 /]# rm -rf /etc/yum.repos.d/*
  9. [root@acc4ec6e7dc3 /]# ls  /etc/yum.repos.d/
  10. [root@acc4ec6e7dc3 /]# vi  /etc/yum.repos.d/dvd.repo
  11. [app]
  12. baseurl=ftp://10.88.0.1/dvd/AppStream
  13. gpgcheck=0
  14. [base]
  15. baseurl=ftp://10.88.0.1/dvd/BaseOS
  16. gpgcheck=0
  17. [root@acc4ec6e7dc3 /]# yum repolist -v
  18. [root@acc4ec6e7dc3 /]# yum -y install net-tools vim
  19. [root@acc4ec6e7dc3 /]# exit
  20. exit

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第14张图片

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第15张图片

将haha文件打包封装成myos:3.8

  1. [root@localhost ~]# podman commit haha myos:3.8 #制作新的镜像
  2. [root@localhost ~]# podman images  #查看系统所有镜像
  3. REPOSITORY TAG IMAGE ID CREATED SIZE
  4. localhost/myos 3.8 89ae5de4fe6c 11 seconds ago 264 MB
  5. localhost/httpd latest 608968fe7738 4 weeks ago 222 MB
  6. localhost/rockylinux 8.6 8cf70153e062 8 months ago 202 MB
  7. [root@localhost ~]#

使用自己制作的镜像

  1. [root@localhost ~]# podman run  -it  --name  xixi localhost/myos:3.8  /bin/bash
  2. [root@97b4eb513723 /]# ifconfig | head -2  #测试
  3. eth0: flags=4163 mtu 1500
  4. inet 10.88.0.8 netmask 255.255.0.0 broadcast 10.88.255.255

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第16张图片

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第17张图片

  1. [root@97b4eb513723 /]# cat /etc/yum.repos.d/dvd.repo
  2. [app]
  3. baseurl=ftp://10.88.0.1/dvd/AppStream
  4. gpgcheck=0
  5. [base]
  6. baseurl=ftp://10.88.0.1/dvd/BaseOS
  7. gpgcheck=0
  8. [root@97b4eb513723 /]# exit
  9. exit
  10. [root@localhost ~]# podman rm -f xixi #删除容器

15 制作镜像,方式二(专业)

制作自己镜像

  1. [root@localhost ~]# vim  yum.sh
  2. rm -rf /etc/yum.repos.d/*
  3. echo '
  4. [app]
  5. baseurl=ftp://10.88.0.1/dvd/AppStream
  6. gpgcheck=0
  7. [base]
  8. baseurl=ftp://10.88.0.1/dvd/BaseOS
  9. gpgcheck=0' > /etc/yum.repos.d/dvd.repo
  10. yum -y install net-tools vim
  11. [root@localhost ~]# chmod +x yum.sh
  12. [root@localhost ~]# vim Containerfile
  13. FROM localhost/rockylinux:8.6 #基础镜像  来自此镜像
  14. COPY yum.sh /opt/ #复制当前路径下脚本文件yum.sh到容器中/opt
  15. RUN /opt/yum.sh #容器运行/opt/yum.sh脚本
  16. [root@localhost ~]# podman build -t niu:3.1 /root #/root为Containerfile文件所在路径以及yum.sh文件所在

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第18张图片

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第19张图片

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第20张图片

 容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第21张图片

使用自己制作的镜像

  1. [root@localhost ~]# podman run -it --name xtt localhost/niu:3.1 /bin/bash
  2. [root@3240038a1995 /]#
  3. [root@3240038a1995 /]# ifconfig | head -2
  4. eth0: flags=4163 mtu 1500
  5. inet 10.88.0.16 netmask 255.255.0.0 broadcast 10.88.255.255
  6. [root@3240038a1995 /]# cat  /etc/yum.repos.d/dvd.repo
  7. [app]
  8. baseurl=ftp://10.88.0.1/dvd/AppStream
  9. gpgcheck=0
  10. [base]
  11. baseurl=ftp://10.88.0.1/dvd/BaseOS
  12. gpgcheck=0
  13. [root@3240038a1995 /]# exit
  14. exit:q::
  15. [root@localhost ~]#
  16. [root@localhost ~]# podman rm  -f  xtt #删除容器

16 容器进阶-对外发布容器服务

•容器可以与宿主机的端口进行绑定

•从而把宿主机变成对应的服务,不用关心容器的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 -itd localhost/httpd:latest
  2. [root@rq ~]# podman ps -a
  3. [root@rq ~]# podman exec -it nsdweb /bin/bash
  4. [root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html
  5. [root@5b69bf6956b0 html]# exit
  6. exit
  7. [root@rq ~]# curl 192.168.88.4
  8. wo shi nsdweb
  9. [root@rq ~]#

17 容器进阶-容器共享卷

•podman容器不适合保存任何数据

•podman可以映射宿主机文件或目录到容器中

–目标对象不存在就自动创建

–目标对象存在就直接覆盖掉

–多个容器可以映射同一个目标对象来达到数据共享的目的

•启动容器时,使用 -v 映射参数

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

容器终极练习

  1. ]# podman rm -f nsdweb #强制删除容器
  2. ]# mkdir /webroot
  3. ]# echo wo shi niuniu > /webroot/index.html
  4. ]# podman run --name nsdweb -p 80:80 -v /webroot:/var/www/html -itd localhost/httpd:latest
  5. [root@rq ~]# curl 192.168.88.4
  6. wo shi niuniu

18 容器进阶-管理系统服务(了解)

• systemd一个更高效的系统&服务管理器

– 开机服务并行启动,各系统服务间的精确依赖

– 服务目录:/usr/lib/systemd/system/

– 主要管理工具:systemctl

手动方式:

podman start nsdweb #启动容器

podman stop nsdweb #停止容器

systemd方式:

systemctl start nsdweb #启动容器

systemctl stop nsdweb #停止容器

systemd管理方式思路:

用户--systemctl--》systemd--服务启动配置文件--》容器启动

•管理员服务文件默认路径

–/usr/lib/systemd/system/

•生成服务启动配置文件

--files:生成文件类型

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

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

systemctl daemon-reload

容器之光练习(必须是相对路径,当前路径必须是/usr/lib/systemd/system,容器必须正在运行)

  1. ]# cd /usr/lib/systemd/system
  2. ]# podman ps -a
  3. ]# podman generate systemd --name nsdweb --files
  4. ]# vim container-nsdweb.service #大致浏览一遍
  5. ]# systemctl daemon-reload #重新加载服务配置文件
  6. ]# systemctl daemon-reload
  7. ]# podman stop nsdweb #手动停止
  8. ]# podman ps -a
  9. ]# systemctl start container-nsdweb #测试systemd方式
  10. ]# podman ps -a
  11. ]# systemctl enable container-nsdweb #设置开机自启

容器介绍、容器/镜像/仓库、部署podman容器服务器、镜像部署_第22张图片

 

你可能感兴趣的:(服务器,linux,ssh)