Redhat(1)-容器--podman-容器基本操作-数据持久化-管理容器

1.容器
2.镜像
3.镜像的实例化-容器
4.容器数据持久化
5.systemd管理容器


1.容器 概念
   runtime:      操作系统上面,runtime是APP运行的支撑和运行环境。软件:podman。
                         容器与runtime,相当于JAVA与JVM之间关系。
                          runc是Docker开发的容器runtime。
   namespace:  容器的空间,进程隔离的。容器里的PID:跟操作系统的PID一样的。

   image:           依赖包,就是一个tar包,相当于一个模板,只读。
   container:      container image运行。
管理工具:
podman:直接管理容器和image。
skopeo:检查、复制、删除、签名镜像。
buildah: 创造新的镜像。
dockefile:image定义工具。
Registry:image存放的地方。
容器OS:
问题:1.src如何创建rpm包,再构建成一个仓库。
            2.如何构建一个Yum仓库。
容器规范:OCI Open Container Initiative

2.镜像管理
 
2.1podman 基本信息

rht-vmctl status all  #查看虚拟机 
ssh utility    #登录
podman ps      #查看状态up状态

#1.安装 两种方式:
yum module list container-tools
yum install podman skopeo
podman info      #验证

#2.运行docker: dockerd daemon ,root-守护进程;podman 不需要
#3.设置机器的cpu 为2个 
virsh setvcpus servera --count 2 --config
rht-vmctl start servera
podman info |less  #查看
rootless:    #无根用户
registries:  #仓库
store:       #存储的配置文件

2.2仓库
  2.21 仓库的文件位置
   用户:.config/containers/registries.conf      
    全局:/etc/containers/registries.conf                                                         
   里面配的3个:
   网络地址;关键词 [registries.search] 可访问站点网址 :registries[]
   http/https;关键词 [registries.insecure] 不安全站点     :registries[]
   blocked=false;关键词 [registries.block]多个服务器,是否阻止,:registries[]
   网络地址;查找域;
 2.22 登录

podman login -u admin -p redhat321 registry.lab.example.com

2.23搜索

podman search registry.lab.example.com

2.24上传下载

podman pull  registry.lab.example.com/ubi8/ubi:8.0
podman push  registry.lab.example.com/ubi8/ubi:8.0

2.25 查看列表

podman images

2.26 查看镜像信息

#1.网络上的
skopeo inspect docker://registry.lab.example.com/ubi8/ubi
"RepoTags"#标签版本

#2.本地的 查看镜像列表和镜像的内容
podman image             #查看命令 显示出子命令
podman images            #相当于  podman image ls

podman container inspect #查看
podman image inspect registry.lab.example.com/ubi8/ubi:latest |less  

# 显示镜像标签
“RepoTags”:[],
"Cmd":["/bin/bash"],  #镜像会跑的命令
“Config”:{ 
"User":"1001",       #用户是1001
"8080/tcp":{},       #用的是TCP协议8080端口
“Evn”:{}            #环境变量
}

2.27保存镜像
 

#1. 保存网络上 保存本地的
podman image save registry.lab.example.com/rhel8/httpd-24 -o httpd-24.tar
podman image save 123 321 213 -o all.tar

#2.删除
podman image rm all.tar

#3.导入
podman image load -i httpd-24.tar

2.28镜像打标签
 

podman image tag registry.lab.example.com/rhel8/httpd-24 registry.lab.example.com/rhel8/httpd-24:1-105

              
3.镜像的实例化-容器
   
3.1 操作:

3.2基本操作

#1.本地已经有image的镜像了
# run :从image创建容器+启动新的容器 
podman run  registry.lab.example.com/rhel8/httpd-24 

#2.查看容器列表
podman ps 

#3.容器操作  命令:podman-container  显示出列选项
man podman-container -ls


#4.查看容器内容  根据列选项查看内容
podman container ls --format "{{.Image}} {{.Names}}"


#5.后台运行
podman run -d registry.lab.example.com/rhel8/httpd-24

#6.查看状态为存在的
man podman ps --filter=exited
podman ps -a|grep Exited

#7.删除容器
podman rm 123
podman container prune -a  #删除所有停止的容器
podman ps -a


#登录
podman login -u admin -p 123 registry.lab.example.com --tls-verify=false

将终端分配给容器 直接运行容器  默认跑/bin/bash
podman run -it registry.lab.example.com/ubi8/ubi
exit

3.3起名字

podman run -it --name myos registry.lab.example.com/ubi8/ubi

#运行
podman run registry.lab.example.com/ubi8/ubi echo hello world
#删除
podman run --rm registry.lab.example.com/ubi8/ubi echo hello XXXX

3.4 分析容器

#1.查看
#ps 
#ps a 看所有的进程 a 表示终端的进程 x后台的进程
#ps axu
ps u &(pgrep httpd)

#查看的是pid的内容
podman container inspect 123
podman container inspect 123|grep Pid

#2.删除
kill -9 5091


#3.查看容器 :logs日志
podman logs -f 123
#写一条bash语句
podman run -d registry.lab.example.com/ubi8/ubi bash -c "while true;do echo sleep 1 and hello world;sleep 2; done "


#4.运行
podman run registry.lab.example.com/ubi8/ubi:latest command -i -t

#5.
podman ps
podman start 


3.5重启容器

podman run --name c2 --restart=always registry.lab.example.com/ubi8/ubi
podman ps -a

3.6访问容器 端口映射

# 外部主机端口  访问容器    
# root 用户只能绑1024以下的端口
# 普通用户可以使用1024以上的端口
podman port -a 

#1.运行
           后台去跑        物理端口:容器端口               
podman run -d --name myweb -p 8000:8080  registry.lab.example.com/rhel8/httpd-24
podman run -it -d --name myweb2 -p 172.25.250.10:80:8080 registry.lab.example.com/rhel8/httpd-24
curl http:://servera:8000

#2.防火墙tcp端口
firewall-cmd  --add-port=8000/tcp -permanet

#3.进到容器中 查看文件内容
podman exec -it myweb1 bash
ls /var/www/html
echo hello world > /var/www/html/index.html

3.7 使用环境变量配置容器

#使用环境变量配置容器
skopeo inspect docker://registry.lab.example.com/rhel8/mariadb-103|grep usage -B1
podman inspect 
usage: 


#1.查找images
podman images
                IMAGE ID
podman run -d   11a444
podman ps -a
podman log
podman logs dis...  #查找参数

#1.装mysql数据库 -e环境变量
podman run -d -p 3306:3306 --name mydb -e MYSQL_USER=tang -e MYSQL_PASSWORD=123 -e MYSQL_DATABASE=blog -e MYSQL_ROOT_PASSWORD=123 registry.lab.example.com/rhel8/mariadb-103:latest

podman ps
yum install -y mysql
mysql -u tang -p 123 -h 172.25.250.10
> show databases;

3.8主机与容器间复制文件

podman cp /etc/hosts mydb:/hosts-from-host
podman exec mydb ls /hosts-from-host

3.9自定义容器镜像

#1.新建一个容器 得到Image Id号
#2.打开终端 复制文件
podman cp /etc/yum.repos.d/rhel_dvd.repo  28564:/etc/yum.repos.d
yum install -y net-tools iproute
ip a

#3.提交容器为容器镜像
podman commit 28564 ubi8:net-tools



podman container prune
podman run -it registry.lab.example.com/ubi8/ubi
podman rm -f mydb naughty_carson

yum provides *bin/ip       #安装ip命令
yum install -y iproute


3.10容器导出导入

导出
podman export 2839291 -o ubi.tar

导入
podman import ubi.tar

4.容器数据持久化

#1.准备目录:+设置用户身份运行+设置上下文
 sudo mkdir /data
 sudo chown tang/data
 sudo chcon -t container_file_t/data
#2.挂载卷 主机文件挂载到容器文件夹下
 podman run -v [src|host-dir]:container-dir[:optins]
#3. -z 所有容器可访问 -Z只有当前容器可访问
podman run -d --name myweb -p 8080:8080 ~/myweb:/var/wwww:Z registry.lab.example.com/rhel8/httpd-24:1-98

curl localhost:8080


  


5.systemd管理容器
  无根(rootless,普通用户)容器创建systemd user unit文件,类似常规服务,用systemctl命令来管理它们。
5.1安装工具

#1.创建成一个服务
#1.1安装工具
sudo yum install -y tigervnc-server
#1.2.创建目录
mkdir -p ~/.config/systemd/user
#1.3.拷贝文件
cp /usr/lib/systemd/user/vncserver@.service ~/.config/systemd/user/
#1.4. 用户启动守护进程
systemctl --user daemon-reload

5.2设置一般用户开机启动
一般的用户服务,开启会话服务启动,关闭会话服务停止。
通过loginctl命令设置用户服务随系统自动启动。

loginctl show-user tang|grep Linger
loginctl enable-linger tang
loginctl disable-linger tang


#1.设置成enable
loginctl show-user tang
loginctl enable-linger tang

ps axu|grep vnc 查所有的进程

5.3 一般用户创建service文件

#1.创建目录
mkdir -p ~/.config/systemd/user/
cd .config/systemd/user/
#2.启动+挂载
podman run -d --name web -p 8000:8080 -v /home/tang/web:/var/wwww/:Z registry.lab.example.com/rhel8/httpd-24

#3. 生成文件                  容器名
podman generate systemd --name web
# 目录下生成  container-web.service
podman generate systemd -n web --files


root用户 使用Systemd unit文件管理容器。
a) 在/etc/systemd/system中运行
b)不使用--user

5.4配置主机启动时启动容器

podman ps                                     #查看
podman stop web
systemctl --user daemon-reload                 #启动守护进程
systemctl --user enable container-web.service  #开机启动
systemctl --user enable container-web.service --now  #启动
systemctl --user status container-web.service  #查看状态


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值