Docker系统性入门(五)

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
  • 没有软件是无漏洞的,视情况而定,如果这个漏洞的部分你没使用到就可以
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞士_R

修行不易...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值