基础运维(十三)Linux 基础命令

设置虚拟机的主机名

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

测试Yum仓库

[root@rq ~]# yum  repoinfo

SELinux与firewalld

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

设置命名

修改网卡命名规则

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

配置IP地址

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

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

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

容器的优势

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

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

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

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

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

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

镜像管理练习

]# podman     images        #查看当前有哪些镜像
]# podman  load   -i   /root/img.tar.xz     #导入镜像
]# podman   images          #查看当前有哪些镜像
镜像删除练习01

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

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

容器管理

•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 启动命令

容器初步练习

]# podman  run  --name abc01 -it  localhost/rockylinux:8.6   /bin/bash
[root@2b0b7c62ab42 /]# cat   /etc/redhat-release
[root@2b0b7c62ab42 /]# useradd dc
[root@2b0b7c62ab42 /]# id  dc
[root@2b0b7c62ab42 /]# exit            #退出容器
[root@rq ~]# podman  ps   -a     #查看当前系统容器
[root@rq ~]# podman  start   abc01     #启动容器
[root@rq ~]# podman  exec  -it  abc01  /bin/bash   #进入容器
[root@2b0b7c62ab42 /]# id  dc
[root@2b0b7c62ab42 /]# exit            #退出容器
[root@rq ~]# podman  rm  -f   abc01    #强制删除容器abc01
容器放入后台练习

]# podman  rm  -f  abc01     #强制删除容器abc01
]# podman run --name  abc01  -itd  localhost/rockylinux:8.6 
]# podman  ps  -a        #查看当前系统有哪些容器
]# podman  exec   -it  abc01    /bin/bash   #进入abc01容器
[root@962aa837e17b /]# useradd  tc
[root@962aa837e17b /]# id tc     
[root@962aa837e17b /]# exit        
]# podman  ps  -a      #查看当前系统有哪些容器
]# podman  exec   -it    abc01   /bin/bash #进入abc01容器
[root@962aa837e17b /]# id tc
[root@962aa837e17b /]# exit
]# podman  ps  -a             #查看当前系统有哪些容器
]# podman  rm  -f  abc01     #强制删除容器abc01

制作镜像,方式一

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

[root@rq ~]# yum -y install vsftpd
[root@rq ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES   #开启匿名用户访问功能
[root@rq ~]# systemctl restart vsftpd
[root@rq ~]# systemctl enable vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@rq ~]# mkdir /var/ftp/dvd
[root@rq ~]# mount /dev/cdrom  /var/ftp/dvd
mount: /var/ftp/dvd: WARNING: device write-protected, mounted read-only.
[root@rq ~]# ls /var/ftp/dvd/
AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo  TRANS.TBL
[root@rq~]#
[root@rq ~]# curl ftp://10.88.0.1/dvd/      #必须有/结尾
dr-xr-xr-x    4 0        0            2048 May 15  2022 AppStream
dr-xr-xr-x    4 0        0            2048 May 15  2022 BaseOS
dr-xr-xr-x    3 0        0            2048 May 15  2022 EFI
-r--r--r--    1 0        0            2204 Mar 30  2022 LICENSE
-r--r--r--    1 0        0             883 May 15  2022 TRANS.TBL
dr-xr-xr-x    3 0        0            2048 May 15  2022 images
dr-xr-xr-x    2 0        0            2048 May 15  2022 isolinux
-r--r--r--    1 0        0              86 May 15  2022 media.repo
[root@rq ~]#
[root@rq ~]# ifconfig | head -2
cni-podman0: flags=4099  mtu 1500
        inet 10.88.0.1  netmask 255.255.0.0  broadcast 10.88.255.255
容器构建网络Yum仓库,安装常用软件

[root@localhost ~]# podman run -it --name haha localhost/rockylinux:8.6 /bin/bash
[root@acc4ec6e7dc3 /]# ls /etc/yum.repos.d/
Rocky-AppStream.repo  Rocky-HighAvailability.repo  Rocky-RT.repo
Rocky-BaseOS.repo     Rocky-Media.repo             Rocky-ResilientStorage.repo
Rocky-Debuginfo.repo  Rocky-NFV.repo               Rocky-Sources.repo
Rocky-Devel.repo      Rocky-Plus.repo
Rocky-Extras.repo     Rocky-PowerTools.repo
[root@acc4ec6e7dc3 /]# rm -rf /etc/yum.repos.d/*
[root@acc4ec6e7dc3 /]# ls /etc/yum.repos.d/
[root@acc4ec6e7dc3 /]# vi /etc/yum.repos.d/dvd.repo
[app]
baseurl=ftp://10.88.0.1/dvd/AppStream
gpgcheck=0
[base]
baseurl=ftp://10.88.0.1/dvd/BaseOS
gpgcheck=0
[root@acc4ec6e7dc3 /]# yum repolist -v
[root@acc4ec6e7dc3 /]# yum -y install net-tools vim
[root@acc4ec6e7dc3 /]# exit
exit
[root@localhost ~]# podman  commit haha   myos:3.8    #制作镜像
[root@localhost ~]# podman images
REPOSITORY            TAG         IMAGE ID      CREATED         SIZE
localhost/myos        3.8         89ae5de4fe6c  11 seconds ago  264 MB
localhost/httpd       latest      608968fe7738  4 weeks ago     222 MB
localhost/rockylinux  8.6         8cf70153e062  8 months ago    202 MB
[root@localhost ~]#
使用自己制作的镜像

[root@localhost ~]# podman run -it --name xixi  localhost/myos:3.8 /bin/bash
[root@97b4eb513723 /]# ifconfig | head -2
eth0: flags=4163  mtu 1500
        inet 10.88.0.8  netmask 255.255.0.0  broadcast 10.88.255.255
[root@97b4eb513723 /]# cat /etc/yum.repos.d/dvd.repo 
[app]
baseurl=ftp://10.88.0.1/dvd/AppStream
gpgcheck=0
[base]
baseurl=ftp://10.88.0.1/dvd/BaseOS
gpgcheck=0
[root@97b4eb513723 /]# exit
exit
[root@localhost ~]# podman  rm  -f  xixi   #删除容器

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

制作自己镜像

[root@localhost ~]# vim yum.sh
rm  -rf  /etc/yum.repos.d/*
echo '
[app]
baseurl=ftp://10.88.0.1/dvd/AppStream
gpgcheck=0
[base]
baseurl=ftp://10.88.0.1/dvd/BaseOS
gpgcheck=0'  > /etc/yum.repos.d/dvd.repo
yum -y install  net-tools  vim
[root@localhost ~]# chmod +x yum.sh  
[root@localhost ~]# vim Containerfile
FROM  localhost/rockylinux:8.6           #基础镜像
COPY  yum.sh  /opt/                    #复制当前路径下脚本文件yum.sh到容器中/opt
RUN   /opt/yum.sh                        #容器运行/opt/yum.sh脚本
[root@localhost ~]# podman build -t  niu:3.1  /root     #/root为Containerfile文件所在路径以及yum.sh文件所在
使用自己制作的镜像

[root@localhost ~]# podman run -it --name xtt localhost/niu:3.1 /bin/bash
[root@3240038a1995 /]# 
[root@3240038a1995 /]# ifconfig | head -2
eth0: flags=4163  mtu 1500
        inet 10.88.0.16  netmask 255.255.0.0  broadcast 10.88.255.255
[root@3240038a1995 /]# cat /etc/yum.repos.d/dvd.repo 
[app]
baseurl=ftp://10.88.0.1/dvd/AppStream
gpgcheck=0
[base]
baseurl=ftp://10.88.0.1/dvd/BaseOS
gpgcheck=0
[root@3240038a1995 /]# exit
exit
[root@localhost ~]#
[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

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

]# podman  run  --name  nsdweb   -p   80:80     -itd   localhost/httpd:latest    
[root@rq ~]# podman  ps  -a
[root@rq ~]# podman  exec  -it  nsdweb  /bin/bash
[root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html 
[root@5b69bf6956b0 html]# exit
exit
[root@rq ~]# curl   192.168.88.4
wo shi nsdweb
[root@rq ~]#

容器进阶-容器共享卷

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

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

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

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

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

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

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

容器终极练习

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

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

• 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,容器必须正在运行)

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

你可能感兴趣的:(Linux,基础运维学习,运维,linux,服务器,学习)