docker系统学习-下半章

419 阅读5分钟

七、Docker多架构支持(X86、arm)

  • 单一架构构建多方架构
  • 假设本地架构amd64,可以下载不支持amd64架构镜像,但无法启动

Docker 的多架构支持

适应不同硬件的物理机 image.png

镜像

image.png

使用 buildx 构建多架构镜像(方式之一)

  • 使用build构建push后,dockerhub并不会显示
  • 不同架构需要在不同的物理机上进行构建并push,但现实是几乎不可能的

Windows和Mac的桌面版Docker自带buildx命令,但是Linux环境下的Docker需要自行安装buildx (github.com/docker/buil…

docs.docker.com/buildx/work…

登录dockerhub

docker login

进入源码目录(Dockerfile所在目录)

  • 安装模拟器和使能特性
Docker for Linux不支持构建 ARM 架构镜像,我们可以安装模拟器(用于多平台镜像构建) 让其支持该特性

docker run --rm --privileged tonistiigi/binfmt:latest --install all
另外,还需要使能实验特性

#使能实验特性
export DOCKER_CLI_EXPERIMENTAL=enabled 

git clone https://github.com/xiaopeng163/flask-redis
cd flask-redis

构建

  • --push 构建完成后提交到仓库
  • --platform 构建支持的架构
  • -t 指定标签
PS C:\Users\flask-redis> docker login
Authenticating with existing credentials...
Login Succeeded

PS C:\Users\flask-redis> docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 -t xiaopeng163/flask-redis:latest .
[+] Building 0.0s (0/0)

# 这里可能会出现错误,重新创建一个环境就可以
error: multiple platforms feature is currently not supported for docker driver. Please switch to a different driver (eg. "docker buildx create --use")

# 查看build 环境
PS C:\Users\Peng Xiao\flask-redis> docker buildx ls
NAME/NODE       DRIVER/ENDPOINT STATUS  PLATFORMS
desktop-linux   docker
desktop-linux desktop-linux   running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default *       docker
default       default         running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6

# 创建一个新的环境--name 自定义名称  --use 创建完成切换到该环境
PS C:\Users\flask-redis> docker buildx create --name mybuilder --use
mybuilder
PS C:\Users\flask-redis> docker buildx ls
NAME/NODE       DRIVER/ENDPOINT                STATUS   PLATFORMS
mybuilder *     docker-container
mybuilder0    npipe:////./pipe/docker_engine inactive
desktop-linux   docker
desktop-linux desktop-linux                  running  linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
default         docker
default       default                        running  linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
PS C:\Users\flask-redis> docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/amd64 
  • 分享镜像,建议支持多种架构
  • docker maifest 显示拉取镜像信息(需联网,dockerhub)

八、git和容器——CI/CD

image.png

cicd, DevOps是一种思想,是一种文化,主要强调软件开发测试运维的一体化,目标是减少各个部门之间的沟通成本从而实现软件的快速高质量的发布。 cicd是指持续集成发布部署,是一套流程实现软件的构建测试部署的自动化。

  • 镜像更新

    • 通过本地构建 -> build -> push
    • 缺点:不方便
  • docker 自动化构建Automated Builds

image.png - 方便构建 - 缺点:收费,不支持多架构自动构建

  • github Actions(推荐)
    • 方便快捷,个人不收费

github Actions

官方文档:docs.github.com/en/actions

使用 GitHub Actions 直接在您的存储库中自动化、自定义和执行您的软件开发工作流程。您可以发现、创建和共享操作以执行您想要的任何工作,包括 CI/CD,并在完全自定义的工作流程中组合操作。

github Actions Hello World练习

官网交互性教学:lab.github.com/githubtrain…

学习资料

GitHub Actions 文档 docs.github.com/en/actions

九、容器安全

9.1 安全的不同层面

image.png

app

代码层面的漏洞

镜像

  • 选择官方认证的基础镜像
  • 镜像的漏洞扫描

容器

  • 容器的漏洞扫描
  • 容器的实时监控

主机

  • Linux Kernel
  • Kernel namespaces
  • Control groups

安全漏洞:www.cvedetails.com/vulnerabili…

dockerd的rootless模式

9.2 Docker 配置扫描

扫描工具:Docker Bench for Security 工具很多这是其中之一

git clone https://github.com/docker/docker-bench-security.git
 cd docker-bench-security
sudo sh docker-bench-security.sh
  • 扫描完毕后会给出分数和扫描项目数
  • PASS通过
  • INFO 不是特别重要
  • WARN 警告 根据扫描出来的警告 做出相应的参考

代码和镜像扫描

9.3 漏洞扫描

  • 公开漏洞管理CVE: cve.mitre.org/

  • 代码扫描漏洞工具: snyk.io/ 仅对github开源项目提供免费扫描

  • Trivy工具镜像扫描 github.com/aquasecurit…

    Trivytri发音像触发器,发音像 en vy )是 一个简单而全面的[漏洞]

    安装教程aquasecurity.github.io/trivy/v0.24…

    扫描图像以查找漏洞:

    只需指定图像名称(和标签)。

    $ trivy image [YOUR_IMAGE_NAME]
    

    例如:

    $ trivy image python:3.4-alpine
    

    扫描目录以查找错误配置:

    只需指定一个包含 IaC 文件的目录,例如 Terraform 和 Dockerfile。

    $ trivy config [YOUR_IAC_DIR]
    

    例如:

    $ ls build/
    Dockerfile
    $ trivy config ./build
    

9.5 容器监控

运行容器进行动态监控,比如是否有人进行不安全操作

  • 工具sysdig(非免费)sysdig.com/

    类似工具还很多,也可通过log集中化进行管理监控




                             _____         _    _____   _
                          / ____|         (_)  / ____| | |
                         | |        __ _   _  | |      | |__     ___   _ __
                         | |       / _` | | | | |      | '_ \   / _ \ | '_ \
                         | |____  | (_| | | | | |____  | | | | |  __/ | | | |
                          _____|  __,_| |_|  _____| |_| |_|  ___| |_| |_| | |

好了各位,以上就是这篇文章的全部内容了,能看到这里人啊,都是人才。

如果这个文章写得还不错,觉得「王采臣」我有点东西的话 求点赞👍求关注❤️求分享👥 对耿男我来说真的非常有用!!!

白嫖不好,创作不易,各位的支持和认可,就是我创作的最大动力,我们下篇文章见!

王采臣 | 文 【原创】 如果本篇博客有任何错误,请批评指教,不胜感激 !

1477A3B7.png