14_1 Linux podman容器技术与数据库基础

server/2024/10/22 13:28:18/

podman_0">14_1 Linux podman容器技术数据库基础

文章目录

  • 14_1 Linux podman容器技术数据库基础
    • @[toc]
    • 1. 源码编译安装
      • 1.1 源码编译安装的步骤
      • 1.2 源码编译安装的优点
      • 1.3 实例
    • 2. 数据同步
      • 2.1 rsync用法
      • 2.2 本地同步
      • 2.3 远程同步
      • 2.4 实时同步
      • 2.5 监控目录变化的工具inotifywait
    • 3. 数据库服务基础(数据库系统)
      • 3.1 数据库是什么
      • 3.2 常见的数据库管理系统
      • 3.3 部署MariaDB数据库系统
        • 3.3.1 部署MariaDB
        • 3.3.2 MariaDB基本使用
        • 3.3.3 恢复数据到数据库
      • 3.4 数据库“表格”层次的操作
        • 3.4.1 表格操作
        • 3.4.2 查(select)
        • 3.4.3 增加(insert)
        • 3.4.4 改(update)
        • 3.4.5 删(delete)
      • 3.5 为数据库系统管理员设置密码
    • 4. podman容器技术
      • 4.1 容器基础概述
      • 4.2 镜像
        • 4.2.1 镜像的名称标识
        • 4.2.2 查找镜像(需要访问互联网)
        • 4.2.3 下载镜像(需要访问互联网)
        • 4.2.4 导入镜像
        • 4.2.5 查看镜像
        • 4.2.6 删除镜像
        • 4.2.7 镜像练习
      • 4.3 podman容器技术
        • 4.3.1 使用容器
        • 4.3.2 容器练习
        • 4.3.3 容器进阶-对外发布容器服务
        • 4.3.4 容器进阶-容器共享卷
        • 4.3.5 容器进阶-管理系统服务

数据库基础环境:CentOS7.9
podman环境:rhel-8.2-x86_64-dvd.iso

1. 源码编译安装

1.1 源码编译安装的步骤

  • 步骤1:安装开发工具gcc与make,释放源代码至指定目录
  • 步骤2:tar解包,释放源代码至指定目录
  • 步骤3:./configure 配置,指定安装目录/功能模块等选项
  • 步骤4:make 编译,生成可执行的二进制程序文件
  • 步骤5:make install 安装,将编译好的文件复制到安装目录

1.2 源码编译安装的优点

  • 获得软件的最新版,及时修复bug
  • 软件功能可按需选择/定制,有更多软件可供选择
  • 源码包适用各种平台

1.3 实例

1.安装开发工具[root@server ~]# yum -y install gcc make[root@server ~]# rpm -q gccgcc-4.8.5-28.el7.x86_64[root@server ~]# rpm -q makemake-3.82-23.el7.x86_642.进行解压缩]# tar  -xf  /root/tools.tar.gz  -C  /usr/local]# ls /usr/local/toolsinotify-tools-3.13.tar.gz 3.进行tar解包 ]# tar -xf /usr/local/tools/inotify-tools-3.13.tar.gz -C /usr/local/          ]# ls  /usr/local/]# cd   /usr/local/inotify-tools-3.13/]# ls4.运行configure脚本           
(1) 作用
作用1:检测当前系统是否安装gcc
作用2:指定安装位置与功能
作用3:生成Makefile文件(制作程序的大纲,做菜的菜谱)]# cd   /usr/local/inotify-tools-3.13/]# ./configure  --help   #查看帮助信息,大概浏览一下]# ./configure  --prefix=/opt/myrpm #指定安装位置,此步骤不产生相应的目录         (2) 常见的报错信息:gcc开发工具没有安装
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.5.进行make编译,变成可以执行的程序(放在内存中)[root@server ~]# cd /usr/local/inotify-tools-3.13/[root@server inotify-tools-3.13]# make
6.进行make install安装     [root@server ~]# cd /usr/local/inotify-tools-3.13/[root@server inotify-tools-3.13]# make   install [root@server inotify-tools-3.13]# ls   /opt/[root@server inotify-tools-3.13]# ls   /opt/myrpm/[root@server inotify-tools-3.13]# ls   /opt/myrpm/bin/

2. 数据同步

2.1 rsync用法

  1. 命令用法

    • rsync [选项…] 源目录 目标目录
  2. 同步与复制的差异

    • 复制:完全拷贝源到目标
    • 同步:增量拷贝,只传输变化过的数据
  3. rsync操作选项

    • -n:测试同步过程,不做实际修改
    • –delete:删除目标文件夹内多余的文档
    • -a:归档模式,相当于-rlptgoD
    • -v:显示详细操作信息
    • -X:保持acl策略不变

2.2 本地同步

[root@server ~]# mkdir   /mydir   /todir
[root@server ~]# cp /etc/passwd    /mydir
[root@server ~]# touch   /mydir/1.txt
[root@server ~]# ls /mydir
]# rsync -avX   /mydir    /todir   #同步目录本身
]# ls   /todir]# rsync -avX   /mydir/    /todir #同步目录内容
]# ls   /todir]# touch   /mydir/2.txt
]# rsync -avX   /mydir/    /todir #同步目录内容
]# ls   /todir
]# echo  123 >  /mydir/1.txt
]# rsync -avX   /mydir/    /todir #同步目录内容
]# ls   /todir]# mkdir   /mydir    /todir
]# echo haha >  /mydir/h.txt  
]# rsync  -avX  --delete   /mydir/      /todir/  #同步目录内容
]# ls   /mydir/
]# ls   /todir/
]# touch   /todir/a.txt          
]# ls  /todir/
]# rsync  -avX  --delete  /mydir/      /todir/
]# ls   /todir/
]# ls   /mydir/

2.3 远程同步

  • 与远程的 SSH目录保持同步
下行:rsync  [...]   user@host:远程目录    本地目录
上行:rsync  [...]   本地目录    user@host:远程目录

2.4 实时同步

  • 虚拟机A生成公钥与私钥,虚拟机A将公钥传递给虚拟机B
虚拟机A                 
1.虚拟机A生成公钥与私钥[root@server ~]# ssh-keygen         #一路回车[root@server ~]# ls    /root/.ssh/id_rsa(私钥)   id_rsa.pub(公钥)    known_hosts(记录曾经远程管理过的机器)
2.虚拟机A将公钥传递给虚拟机B]# ssh-copy-id     root@192.168.88.2]# rsync  -avX --delete   /mydir/    root@192.168.88.2:/mnt

2.5 监控目录变化的工具inotifywait

  • 基本用法
    • inotifywait [选项] 目标文件夹
  • 常用命令选项
    • -m,持续监控(捕获一个事件后不退出)
    • -r,递归监控、包括子目录及文件
    • -q,减少屏幕输出信息
    • -e,指定监视的 modify、move、create、delete、attrib 等事件类别

3. 数据库服务基础(数据库系统)

3.1 数据库是什么

3.2 常见的数据库管理系统

  • 微软的SQL Server
  • IBM 的 DB2
  • 甲骨文的Oracle、MySQL
  • 社区开源版MariaDB
  1. MySQL与MariaDB是同一个人写的
  2. 数据库系统他不是简单的一个应用,已经上升到系统层面两层结构(库–表格)

3.3 部署MariaDB数据库系统

3.3.1 部署MariaDB
[root@server /]# yum  -y  install   mariadb-server
[root@server /]# systemctl   restart    mariadb
3.3.2 MariaDB基本使用
  1. Linux系统的管理指令不能使用
  2. 所有的数据库系统指令都必须**以 ; 结尾**
  3. 数据库系统的指令大部分不支持tab补全
1.
[root@server /]# mysql         #进入数据库系统
> create  database  nsd01;     #创建nsd01数据库
> show  databases;                #查看所有数据库
> drop   database   nsd01;    #删除数据库nsd01
> show  databases;               #查看所有数据库
> exit;
Bye
[root@server ~]#2.
[root@server /]# mysql     #进入数据库系统
> use    mysql;              #切换到mysql数据库
> show   tables;          #查看当前库中所有表格
> show   databases;    #查看所有数据库
> use  test;             #切换到test数据库
> exit;
3.3.3 恢复数据到数据库
Linux命令行]# mysql   test   <   /root/users.sql
Linux命令行]# mysql                 #进入数据库系统
MariaDB [(none)]> use test;        #切换到数据库test
MariaDB [test]> show tables;      #查看当前库有哪些表格

3.4 数据库“表格”层次的操作

3.4.1 表格操作
  • 增(insert)、删(delete)、改(update)、 查(select)
  • 表字段(表头)、表记录(表的内部数据)
3.4.2 查(select)
  • 格式:select 表字段,表字段,…… from 库名.表名;
[root@server /]# mysql   
> use    test;
> select   *   from   base;        #查看base所有表字段内容
> select   *   from   location;    #查看location所有表字段内容
> select   name,password   from   base;   > use  mysql;
> select   *   from    test.base;    > use  test;
> select   id,name    from     base;[root@server /]# mysql  
> use    test;    #切换到test库
查询密码为456的记录
> select  *   from    base  where   password='456';
查看id编号为4的记录
> select  *   from   base  where   id='4';
查询id编号为4并且密码为123的记录
> select  *  from  base  where  id='4'    and   password='123';
查询id编号为4或者密码为123的记录
> select  *  from  base   where  id='4'  or   password='123';
3.4.3 增加(insert)
  • 格式:insert 表名 values (‘值’,‘值’,‘值’);
MariaDB [test]> insert   base  values('10','dc','789');
MariaDB [test]> insert   base  values('11','tcc','369');
MariaDB [test]> select   *   from base ;
3.4.4 改(update)
  • 格式:update 表名 set 表字段=‘新值’ where 表字段=‘值’;
> select   *  from  base ;
> update   base   set   password='8888'    where   id='1';
> select  *  from   base ;   > update  base   set   password='9999'    where   id='2';
> select  *  from   base ;   
3.4.5 删(delete)
> use   test;
> delete   from   base   where     id='4' ;
> select   *   from   base ;> delete   from   base   where     id='3' ;
> select   *   from   base ;

3.5 为数据库系统管理员设置密码

linux_root_292">3.5.1 数据库root与linux root的区别
  • 数据库系统管理员:对于数据库系统有最高权限,名字为root,能够登陆数据系统的用户信息,由mysql库中user表进行储存
  • Linux系统管理员: 对于Linux系统有最高权限,名字为root,能够登陆Linux系统的用户信息,/etc/passwd进行储存
3.5.2 为数据库系统管理员设置密码
1. 格式:mysqladmin  [-u用户名]  [-p[旧密码]]  password  '新密码'2. 实例:
(1) 无旧密码
[root@server /]# mysqladmin -u  root  password  '456'
[root@server /]# mysql  -u   root   -p   #交互式进行登录
Enter password:
[root@server /]# mysql  -u root  -p456 #非交互式进行登录(2) 已知旧密码修改新密码       
]# mysqladmin  -u   root  -p456  password   '123'
]# mysql  -u  root    -p123     

podman_314">4. podman容器技术

4.1 容器基础概述

  1. Linux中的容器是装应用的;

  2. 容器就是将软件打包成标准化单元,用于开发、交付和部署;

  3. 容器技术已经成为应用程序封装和交付的核心技术;

  4. 优点

    • 相比于传统的虚拟化技术,容器更加简洁高效;
    • 传统虚拟机需要给每个VM安装操作系统;
    • 容器使用的共享公共库和程序 ;
    • 镜像是启动容器的核心,镜像由镜像仓库提供;
    • podman中容器是基于镜像启动的;
  5. podman与容器的关系

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

yum -y module install container-tools

4.2 镜像

4.2.1 镜像的名称标识
  • 每一个镜像都对应唯一的镜像 id;
  • 镜像名称(姓氏) + 标签(名字) = 唯一
  • 每一个镜像都有标签,如果没写就是默认标签 latest;
  • 我们在调用镜像的时候,如果没有指定标签也是 latest;
4.2.2 查找镜像(需要访问互联网)
4.2.3 下载镜像(需要访问互联网)
  • podman pull 镜像名称:标签
    • 如:podman pull localhost/myos:latest
4.2.4 导入镜像
  • podman load -i 备份文件.tar.gz
    • 如:podman load -i /root/httpd.tar.gz
4.2.5 查看镜像
4.2.6 删除镜像
  • podman rmi 镜像名称:镜像标签
4.2.7 镜像练习
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        #查看当前有哪些镜像2. 镜像删除练习]# 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   imag

podman_389">4.3 podman容器技术

依赖文件:touch /etc/resolv.conf #依赖此文件,保证此文件存在即可

4.3.1 使用容器
  1. podman run 命令

    • podman run -选项 镜像名称:镜像标签 启动命令
  2. 查看 run 的选项

    • podman help run
    • man podman-run
    • run = 创建 + 启动+ 进入;三合一的操作
  3. podman run 命令的选项

    • 选项 -i,交互式方式
    • 选项 -t,终端
    • 选项 -d,后台运行
    • 选项 --name 容器名字
  4. 启动容器,并进入容器

    • podman run -it myos:latest /bin/bash
  5. 容器管理命令

    • 启动容器
      • podman run –选项 镜像名称:镜像标签 启动命令
    • 查看容器
      • podman ps [ -a 所有容器id ] [ -q 只显示容器 id ]
    • 删除容器
    • 容器管理命令启动、停止、重启
      • podman start|stop|restart 容器id
    • 进入容器
      • podman exec -it 容器id 启动命令
4.3.2 容器练习
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            #退出容器[root@rhel8 ~]# podman  ps   -a     #查看当前系统容器[root@rhel8 ~]# podman  start   abc01     #启动容器[root@rhel8 ~]# podman  exec  -it  abc01  /bin/bash   #进入容器[root@2b0b7c62ab42 /]# id  dc[root@2b0b7c62ab42 /]# exit            #退出容器[root@rhel8 ~]# podman  rm  -f   abc01    #强制删除容器abc012. 容器放入后台练习                           ]# podman  rm  -f  abc01     #强制删除容器abc01]# podman run --name  abc01  -d  localhost/myos:httpd ]# 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
4.3.3 容器进阶-对外发布容器服务
  • 容器可以与宿主机的端口进行绑定
  • 从而把宿主机变成对应的服务,不用关心容器的IP地址
  • 我们使用 -p 参数把容器端口和宿主机端口绑定
  • 同一宿主机端口只能绑定一个容器服务
  • -p [可选IP]:宿主机端口:容器端口
  • 例如:把宿主机变成 apache
    • podman run -d -p 80:80 myos:httpd
  • 例如:把宿主机变成 nginx
    • podman run -d -p 80:80 myos:nginx
1. 容器放入后台,端口绑定练习    ]# 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]# exitexit[root@rhel8 ~]# curl   192.168.88.4wo shi nsdweb[root@rhel8 ~]#
4.3.4 容器进阶-容器共享卷
  • podman容器不适合保存任何数据
  • podman可以映射宿主机文件或目录到容器中
    • 目标对象不存在就自动创建
    • 目标对象存在就直接覆盖掉
    • 多个容器可以映射同一个目标对象来达到数据共享的目的
  • 启动容器时,使用 -v 映射参数
    • podman run -d -v 宿主机对象:容器内对象 镜像名称:标签
1. 容器终极练习             ]# 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   -d  localhost/myos:httpd [root@rhel8 ~]# curl   192.168.88.4          wo shi niuniu             
4.3.5 容器进阶-管理系统服务
  • 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-reload1. 容器之光练习(必须是相对路径,当前路径必须是/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]# podman   ps  -a]# systemctl   enable   container-nsdweb     #设置开机自启


http://www.ppmy.cn/server/48236.html

相关文章

OCP前景咋样,工资高吗?

Oracle数据库作为企业级应用的基石&#xff0c;其专业人才一直是市场上的热门需求。 OCP认证&#xff0c;作为Oracle公司颁发的专业证书&#xff0c;OCP认证的持有者通常被视为具备了高级数据库管理、配置、备份、恢复、调优以及SQL编程等关键技能的专业人士。 这些技能在当今…

15. 《C语言》——【如何动态内存开辟】

亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&#xff0c;成为一名优…

WeTrade 在印度尼西亚井里汶成功举办研讨会

端午安康!在这欢乐的假日里&#xff0c;WeTrade和各位投资者分享一则喜事!如果有意参加的&#xff0c;可以联系小编! 5 月底&#xff0c;我们在印度尼西亚井里汶成功举办了一场精彩研讨会&#xff0c;聚集了来自印度尼西亚各地交易社区的100多名交易者。 此次研讨会由经验丰富…

什么是Socket?

什么是Socket&#xff1f; Socket&#xff08;套接字&#xff09;是网络通信的基本单位&#xff0c;它允许在不同计算机之间进行数据交换。Socket在网络编程中起着至关重要的作用&#xff0c;它为应用程序提供了一个机制&#xff0c;通过网络发送和接收数据。简单地说&#xf…

【Rust】——估计不同类型值的trait对象

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

小程序域名怎么配置?三步教您配置

小程序域名怎样配置&#xff1f;在当今数字化时代&#xff0c;小程序已成为企业展示品牌形象、提供便捷服务的重要渠道。然而&#xff0c;许多开发者在搭建小程序时&#xff0c;都会遇到服务器域名配置的问题。今天&#xff0c;我们将为您揭秘小程序服务器域名配置的小tip&…

8. 正则表达式

正则表达式 在处理字符串时&#xff0c;需要查找符合某些复杂规则的字符串&#xff0c;正则表达式就是用于描述这些规则的工具 一、正则表达式语法 行定位符&#xff1a;用来描述字符串的边界 -->用来匹配一整行 符号匹配位置^行的开始$行的结尾 ^tm : 可以匹配行 tm equa…

「小明赠书活动」第五期“网安三剑客”套系图书《内网渗透技术》《渗透测试技术》《Web应用安全》

大模型风潮已掀起&#xff0c;各大巨头争相入局&#xff0c;从ChatGPT到Sora&#xff0c;全球的AI应用“卷出了花”。然而&#xff0c;网络安全人员在享受AI技术带来的便捷之余&#xff0c;也不得不面对一系列新兴的安全挑战&#xff0c;无法忽视。 ⭐️ 赠书 - 图书简介 人…