centos7.5安装podman容器、基础使用、容器共享卷及管理
一、容器介绍1、Linux里面容器的作用- Linux中的容器是装应用的- 容器就是将软件打包成标注化单元,用于开发、交付和部署- 容器技术已经成为应用程序封装和交付的核心技术2、容器的优缺点1.优点- 相比于传统的虚拟化技术,容器更加简洁高效- 传统虚拟机需要给每个VM安装操作系统- 容器使用的共享公共库和程序2.缺点- 容器的隔离性没有虚拟化强- 共用Linux内核,安全性有先天缺陷3、pod
一、容器介绍
1、Linux里面容器的作用
- Linux中的容器是装应用的
- 容器就是将软件打包成标注化单元,用于开发、交付和部署
- 容器技术已经成为应用程序封装和交付的核心技术
2、容器的优缺点
1.优点
- 相比于传统的虚拟化技术,容器更加简洁高效
- 传统虚拟机需要给每个VM安装操作系统
- 容器使用的共享公共库和程序
2.缺点
- 容器的隔离性没有虚拟化强
- 共用Linux内核,安全性有先天缺陷
3、podman描述
1.podman和容器的关系:
- podman是完整的一套容器管理系统
- podman提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术
二、podman安装
[root@localhost ~]# yum -y install podman三、镜像、仓库
1、镜像概念
1.镜像是启动容器的核心
- 镜像可以从官方镜像库下载,也可以自己制作
2.在podman中容器是基于镜像启动的
3.镜像采用分层设计
4.使用COW技术
2、 官方镜像库
docker.io、quay.io
3、镜像的名称和标签
指定镜像的方法:
- 每一个镜像都对应唯一的镜像id
- 镜像名称(文件名称)+标签(路径) == 唯一
- 每一个镜像都有标签,如果没写就是默认标签 latest
- 我们在调用镜像的时候,如果没有指定标签也是latest
4、常用命令
podman images                   #查看本机镜像podman search  关键字            #查找镜像(需要能访问互联网)
    案例:podman search httpdpodman pull    镜像名称:标签     #下载镜像(需要能访问互联网)
    案例:podman pull localhost/myos:latest
podman load -i 备份文件.tar.gz   #导入镜像
    案例:podman load -i /root/httpd.tar.gz镜像管理命令:
    podman images                  #查看镜像
    podman search                  #查找镜像
    podman rmi 镜像名称:镜像标签     #删除镜像podman run 命令                  #运行容器    run = 创建 + 启动 + 进入
格式:podman run -选项 镜像名称:镜像标签 启动命令
查看run的选项
    podman help run
    man podman-run
命令常用参数:
    -i:交互式
    -t:终端
    -d:后台运行
    --name:容器名字
案例:
    [root@localhost ~]# podman pull docker.io/library/httpd  #下载镜像
    [root@localhost ~]# podman images                 #查看镜像
    REPOSITORY                TAG      IMAGE ID       CREATED       SIZE
    docker.io/library/httpd   latest   c30a46771695   2 weeks ago   148 MB
    [root@localhost ~]# podman run -it c30 /bin/bash  #运行容器,前台运行必须加解释器、后台不用四、podman容器管理
1、容器管理命令
1、启动容器
podman run -选项 镜像名称:镜像标签 启动命令2、查看容器
podman ps [-a  所有容器id] [-q 只显示容器id]3、删除容器
podman rm 容器id4、容器管理命令启动、停止、重启
podman   start  |  stop  |  restart   容器id5、进入容器,启动新进程
podman   exec   -it  容器id   启动命令五、对外发布容器服务
1、如何访问podman服务
1、默认容器可以访问外网
2、但外部网络的主机不可以访问容器内的资源
3、容器每次创建IP地址都会改变
4、解决这个问题的最佳方法是端口绑定
5、容器可以与宿主机的端口进行绑定
6、从而把宿主机变成对应的服务,不用关心容器的IP地址
2、发布podman服务
1、使用 -p 参数把容器端口和宿主机端口绑定
2、同一宿主机端口只能绑定一个容器服务
3、-p [可选IP]:宿主机端口:容器端口
4、案例:把宿主机变成apache
podman run -d -p 80:80 myos:httpd
六、容器共享卷
1、卷的用途(类似挂载)
1、podman容器不适合保存任何数据 2、数据文件与配置文件频繁更改 3、修改多个容器中的数据非常困难 4、多容器之间有数据共享、同步需求 5、重要数据在容器内不方便管理易丢失 6、解决这些问题请使用主机卷映射功能 
2、主机卷的映射
1、podman可以映射宿主机文件或目录到容器中 - 目标对象不存在就自动创建 - 目标对象存在就直接覆盖掉 - 多个容器可以映射同一个目标对象来达到数据共享的目的 2、启动容器时,使用-v 映射参数(可有多个) - podman run -itd -v 宿主机对象:容器内对象 镜像名称:标签 
3、卷映射案例
[root@localhost ~]# podman run -itd --name myweb c30a46771695 #启动后端容器
[root@localhost ~]# podman inspect myweb | grep "IPAddress.:" | awk -F'"' '{print $4}' #查看后端容器ip
[root@localhost ~]# mkdir /var/webroot                            #新建目录
[root@localhost ~]# echo TestApache > /var/webroot/index.html     #编写网页测试文件
[root@localhost ~]# podman run -itd --name httpd -p 80:80 -v /var/webroot/:/usr/local/apache2/htdocs/ c30a46771695             #映射卷完成、并启动容器
[root@localhost ~]# podman exec -it httpd /bin/bash               #进入容器
root@3fbd2dc5c49e:/usr/local/apache2# find / -name "index.html"   #查询网页文件位置
/usr/local/apache2/htdocs/index.html    #实际位置
[root@localhost ~]# curl 127.0.0.1                                #验证
踩坑记:
    默认apache网页根目录是/var/www/html/,经过启动容器后查询发现根目录改变,因此卷映射处要改成实际映射的目录
    七、管理系统服务
1、systemd
1.一个更高效的系统&服务管理器
- 开机服务并行启动,各系统服务间的精确依赖
- 服务目录:/usr/lib/systemd/system/
- 主要管理工具:systemctl
2、管理员管理容器服务
1.管理员服务文件默认路径
- /usr/lib/systemd/system/
2.生成服务启动配置文件
--files:生成文件类型
podman generate systemd --name 容器名 --files
3.重新加载服务启动配置文件
systemctl daemon-reload
3、案例
将容器配置成systemd管理的服务
[root@localhost ~]# cd /usr/lib/systemd/system/    #进入服务目录
[root@localhost system]# podman generate systemd --name httpd --files  #建立服务文件
/usr/lib/systemd/system/container-httpd.service
[root@localhost system]# systemctl daemon-reload                       #重新加载服务文件
[root@localhost system]# systemctl enable container-httpd.service      #设置开机自启
Created symlink from /etc/systemd/system/multi-user.target.wants/container-httpd.service to /usr/lib/systemd/system/container-httpd.service更多推荐
 
 




所有评论(0)