Docker系统性入门(五)

news2024/11/18 15:42:27

文章目录

  • Podman
    • 安装&基操
    • pod
  • 多架构
  • CI/CD
  • 容器安全
    • 监控

Podman

  • Podman 是 Red Hat 在2018年推出的,源代码开放
  • 是一个基于 Linux 系统的 daemon-less 的容器引擎;可以运行在root或者非root用户模式
  • 最近总听到这个要代替docker什么的,可以参考
  • 和docker的区别:
    • 最主要的区别是podman是Daemonless的,而Docker在执行任务的时候,必须依赖于后台的docker daemon
    • podman不需要使用root用户或者root权限,所以更安全。
    • podman可以创建pod,pod的概念和 Kubernetes 里定义的pod类似
    • podman运行把镜像和容器存储在不同的地方,但是docker必须存储在docker engineer所在的本地
    • podman是传统的 fork-exec 模式,而docker是 client-server 架构(daemon就是server,docker命令就是client)
  • 可以多了解一下docker的daemon,类似与kernel通信的工具,是操作容器必不可少的
    • 我们知道容器技术就是隔离应用程序的运行时环境,但容器之间可以共享同一个操作系统
    • 可以了解一下隔离技术,是一个比较复杂的话题
  • docker架构
    1
  • podman架构
    2
  • 官网

安装&基操

  • 安装:sudo yum -y install podman,最新版到4.0了,centos7默认1.6.4
  • 可能需要开启user_namespace
    sudo vim /etc/sysctl.conf
    user.max_user_namespaces=10000
    reboot
    
  • 使用上和docker极为类似
    podman search nginx
    podman pull docker.io/library/nginx
    podman run -it --name nginx-d docker.io/library/nginx
    podman container ls
    podman ps -a
    
  • 从操作上可以看出podman和docker的不同
    • docker的daemon;而且非root用户必须加入docker组才能操作
      3
    • 添加个新用户:# useradd -r doc-pod,修改密码:# passwd doc-pod
      4
    • 可以尝试一下,podman用户之间的镜像容器是完全隔离的,而docker在哪个用户都能看见
    • 在centos7下有些问题

pod

  • 基本操作
    # 创建pod
    podman pod create --name test
    podman ps -a --pod
    # 在pod中创建container
    podman container run -d --name testd --pod test docker.io/library/busybox ping 8.8.8.8
    # 在一个pod中的容器具有相同的ip地址
    
  • documentation,虽然是英文的,但是可以看看
  • 虽然底层技术有所不同,但操作和docker很相似,即使k8s更换了container runtime也能快速入手(其实对直接使用k8s的开发者没什么影响)

多架构

  • docker支持多架构,这个架构是指机器的硬件设计,常见的有ARM和x86(Intel、AMD)
    1
  • inspect镜像也能看到其Architecture,一般官网的镜像都有针对不同机器架构的版本
    2
  • 如何在单一架构机器下build出可以适应不同架构的镜像?使用buildx,Linux下需要自行安装
    # 安装,参考 https://github.com/docker/buildx#linux-packages
    wget https://github.com/docker/buildx/releases/download/v0.8.1/buildx-v0.8.1.linux-amd64
    # copy it to the destination folder
    $HOME/.docker/cli-plugins
    # Or copy it into one of these folders for installing it system-wide.
    /usr/local/lib/docker/cli-plugins OR /usr/local/libexec/docker/cli-plugins
    # 可能需要开执行权限
    chmod +x ~/.docker/cli-plugins/docker-buildx
    # 可以设置成default builder,应该就是软链过去
    
    • 还可以直接在Dockerfile中引入buildx工具,直接构建多架构镜像:docker image build 即可
    FROM docker
    COPY --from=docker/buildx-bin /buildx /usr/libexec/docker/cli-plugins/docker-buildx
    RUN docker buildx version
    
  • 使用buildx
    docker login
    docker buildx create --name mybuilder --use
    docker buildx ls	# 使用自己的buildx
    # build完会自动推到远程
    docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 -t roykun/flask-redis:latest .
    

CI/CD

  • 我们编镜像的代码推到GitHub或者其他仓库,然后再dockerhub关联一下,当代码发生变化,可以根据设置自动触发build
  • 上面只是自动化的一小部分,从代码提交、设置环境、运行命令到产生报告一系列的行为都可定义;这方面的工具很多,比如Jenkins;这里介绍用的也比较多的GitHub Actions
  • 可以直接从官网学习;这里有个Hello World教程。最重要的就是理解workflow和jobs
    • 一般包括拉取镜像、配置环境、验证代码、推到仓库、产生报告一套步骤;官网的文档写的很好值得看
    • 后面实践项目时在看
  • 同样,支持配置buildx

容器安全

  • 代码、基础镜像、镜像、容器、host都可能有安全隐患
  • docker可以配置安全扫描,代码下载到本地
  • 启动了你的docker容器后,可以执行上面的代码:sudo ./docker-bench-security.sh,会给出一些log和score
  • 也可以使用synk扫描GitHub/Bitbucket的代码,或者下载trivy

监控

  • 可以在容器运行时进行监控,例如使用sysdig
  • 没有软件是无漏洞的,视情况而定,如果这个漏洞的部分你没使用到就可以

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/77702.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

甲骨文蟾蜍 Toad for Oracle 16.2 注册版

使您的 Oracle 数据库操作现代化以实现业务敏捷性。 Toad for Oracle 是唯一一款可帮助您简化工作流程、减少代码缺陷并提高代码质量和性能同时支持团队协作的开发人员工具。自动化管理任务并主动管理您的数据库,同时实现性能优化和风险缓解。快速轻松地定义、搜索…

硬核干货,带你一文掌握 MySQL 的binlog 、redo log、undo log

​hello,大家好。 在MySQL 中我们经常会接触到三个核心日志,它们分别是:binlog 、redo log、undo log。 好多同学对于它们可能并不陌生,但是具体区分起来各自的功能用途以及实现原理,那可能认知就会比较模糊了&#x…

Web前端开发技术课程大作业_ 关于美食的HTML网页设计——HTML+CSS+JavaScript在线美食订餐网站html模板源码30个页面_

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

Git基础|配置Git账号信息,Git存储的原理详解【建议收藏】

Git作为分布式版本管理,就需要对用户进行认证,账号名和邮箱,方便开发者从不同的电脑进行登录。同时,要想真的记住Git的命令,也必须要清楚Git的存储、上传原理。 Git基础2一、用户签名1、打开命令界面2、进入到用户管理…

CleanMyMac2023最新版软件功能及使用心得教程

电脑明明有100G,但是只剩下几个G,明明已经清理了很多,但是还是没有释放出内存,怎么办?可以试试CleanMyMac X,怎么使用呢?来看看吧!CleanMyMac X是一款颇受欢迎的专业清理软件&#x…

【2022.12.10】备战春招Day5——每日一题 + 96. 不同的二叉搜索树

【每日一题】1691. 堆叠长方体的最大高度 题目描述 给你 n 个长方体 cuboids ,其中第 i 个长方体的长宽高表示为 cuboids[i] [widthi, lengthi, heighti](下标从 0 开始)。请你从 cuboids 选出一个 子集 ,并将它们堆叠起来。 如…

​创新不是公司的救命良药

阅读本文大概需要1.06 分钟。之前问说当整个大环境都差的时候,公司还有项目可做就不错了,不要觉得只能赚点小钱就看不上,现在已经从伸手抓钱,变成弯腰捡钱的时代了。 开始赚的钱是不多,但能验证方向,先把跑…

web前端期末大作业 基于HTML+CSS+JavaScript学生宿舍管理系统

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

SSM+Mysql实现的仿网盘系统(功能包含注册登录,文件上传、所有文件、分类资源查看、用户管理、分享资源等)

博客目录SSMMysql实现的仿网盘系统实现功能截图系统功能使用技术代码完整源码SSMMysql实现的仿网盘系统 本系统是一个模拟百度网盘的系统,通过实现了图片/文本文件/视频等资源上传,并且分类管理、资源分享,实现了资源的在线管理。 (文末查看…

Vue2.0开发之——Vue组件-组件属性(34)

一 概述 为Count组件添加自定义属性为自定义属性添加v-bind自定义属性props是只读的自定义属性default默认值自定义属性type值类型自定义属性required必填值 二 为Count组件添加自定义属性 2.1 组件的props props 是组件的自定义属性,在封装通用组件的时候&#…

【Vue核心】6.数据代理

1.回顾Object.defineProperty方法 Object.defineproperty Object.defineproperty 的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性。Object.defineproperty方法需要传递3个参数,1.属性所在的对象 2.属性的名字 3.一个描述符对象…

Wireshark TS | PMTU 问题实例

前言 PMTU,说到网络上的 PMTU 所能实现的功能,网工对它的原理自然是如数家珍,不熟悉的可能就感觉高大上了,觉得路径 MTU 能自动发现了,自然端到端数据包传输就能避免数据包分片了。可是理想很丰满,现实很骨…

防火墙NAT综合实验——nat控制,豁免,远程,DMZ区域(带命令)

作者简介:一名在校云计算网络运维学生、每天分享网络运维的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.实验 实验要求 实验命令 前言 本章将会进行NAT的综合配置…

编程零基础转行Python,往这个方向走,绝对没有错

近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多。一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学习路线图。 对于一个零基础的想学习python的朋友来说…

对造轮子Say NO!如何移植并使用Linux内核的通用链表?(附源代码)

1. 什么是链表 链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。 相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配…

字节跳动技术总监整理的这份MySQL学习文档,看完才发现要学的可太多了!

对于程序员来说,去任何一家公司面试,数据库是避不开的。开发人员对MySQL掌握的越深入,你能做的事情就越多。 完成业务功能,要懂基本的Sql语句。做性能优化,要懂索引,懂引擎。做分库分表,要懂主从…

Head First设计模式(阅读笔记)-13.代理模式

监控糖果机 假设现在需要一台监视器去生成报告,报告中包括糖果机的位置、库存等信息 // 糖果机 public class GumballMachine{String loc;public GumballMachine(String loc, int count){this.loc loc;}public String getLoc(){return loc;}// 其他方法省略 } // 监…

详解Pytorch中的torch.nn.MSELoss函数(包括每个参数的分析)

一、函数介绍 Pytorch中MSELoss函数的接口声明如下,具体网址可以点这里。 torch.nn.MSELoss(size_averageNone, reduceNone, reduction‘mean’) 该函数默认用于计算两个输入对应元素差值平方和的均值。具体地,在深度学习中,可以使用该函数用…

玩转webpack(03):webpack进阶使用

一、自动清理构建目录 避免构建前每次都要手动删除dist 使用 clean-webpack-plugin(默认删除output指定的输出目录) (1)依赖安装 npm i clean-webpack-plugin -D (2)使用 --- webpack.prod.js const Cl…

基于java学生签到考勤系统

开发工具eclipse,jdk1.8 技术:java swing 数据库:mysql5.7 学生选课系统功能:管理员、教师、学生三个角色 一、管理员功能: 1.登录、修改密码、退出系统 2.学生管理:添加、修改、删除、查询 3.班级管理&#x…