站内公告:

我们的虚拟社区正式开通了

Main Menu

docker介绍及podman使用命令

作者 jvip_chen, 2022-1月-14 12:07 下午

« 上一篇主题 - 下一篇主题 »

jvip_chen

Docker

    开源应用容器引擎,go语言
    作用:打包应用到一个容器,随时一波带走
    优势:沙箱机制(虚拟系统程序,运行程序都是独立的,不会对现有系统产生影响),开销低

    docker架构
    三个基本概念
    镜像:image,root文件系统
    容器:镜像和容器===类似于===面向对象类和实例,镜像是静态的,容器是实体对象,可以被创建,启动,停止,删除,暂停
    仓库:保存镜像
    但是目前podman是比较流行
podman

    podman是开源容器运行的项目
    比docker的优势:不需要运行任何守护进程
                    没有root权限也可以运行

    介绍一下再linux系统下的安装:
    1、podman 终端执行,检测是否有此命令
    2、如果没有,执行:yum install podman
    3、查看podman容器运行状态列表:podman ps -a  (加上a会显示pause)
    4、查看podman镜像列表:podman images
    5、运行一个容器:

       
podman run -i -d -p 80:80 -v /data/:/data/ --privileged --name mytest centos:7.3.1611 /usr/sbin/init
        -i: 允许你对容器进行交互
        -d: 后台运行 不会进入容器
        -p 端口号,左侧服务器指向:右侧容器内端口号,服务器端口不能重复,如果多个容器多个应用,需要nginx反响代理
        -v 文件存储,左侧为映射到本地:右侧为容器内文件夹,防止镜像过大,迁移困难
        --privileged: 和最后的参数/usr/sbin/init共同使用 才会有更高的权限控制
        --name: 自定义容器启动的名称
        centos:7.3.1611: 镜像名称 如果本地没有 会从网络上下载
        也可以加入其它的参数 如-m 8G --cpus="4"
        -m 8G :内存分配为8G
        --cpus="4": 分配cpu核心总数为4

    6、进入容器:

     
    podman exec -i -t 7f5d968e2cf2 /bin/bash
        -i: 允许你对容器进行交互
        -t: 在新容器内指定一个伪终端或终端
        243c32535da7:容器id可以用podman ps -a查看 也可以用名称代替
    7、容器如果是挺值得,开启命令podman start mytest(容器名称)
    8、停止运行中的容器,podman stop mytest(容器名称)
    9.修改运行的参数 直接是不能修改运行的参数的 所以启动前要想好加入什么样的参数 如果一定要修改 可以先提交出一个容器为一个镜像 podman commit A B
        A为容器名称 B为生成的镜像名称 然后重新执行第5步骤 注意如果容器过大这步会导致所有podman命令不能执行 不能进入其他容器 但容器内部运行正常
        建议没有其他人操作时这样处理 如果着急执行那就先导出容器 再导入 这个过程前期只会导致podman ps不能执行 最后Storing signatures的过程会和commit效果一样 但时间相较短 10几分钟左右 建议项目目录映射出来 这样容器不会过大
    10.删除一个容器 podman rm mytest 最后的参数为容器名称也可以容器id 加-f参数为强制执行 加-f之前一定要观察好正常不能删除报的是什么错
    11.删除一个镜像 podman rmi 7f5d968e2cf2最后的参数为镜像id号 可以用podman images查看
    12.导出一个压缩镜像 podman save mytest | gzip > mytest.tar.gz
    13.导入一个压缩镜像 gunzip -c mytest.tar.gz | podman load
    14.导出一个容器podman export mytest > mytest.tar 压缩导出 podman export mytest | gzip> mytest.tar.gz
    15.导入一个容器cat mytest.tar | podman import - mytest