docker镜像构建 8个最好的实践(2)

简介: docker镜像构建 8个最好的实践(2)

5 .dockerignore丢弃一些垃圾文件

当我们构建镜像的时候我们不需要项目的所有内容,来运行我们内部的应用程序,像目标或构建文件夹这样的自动生成的文件夹,我们不需要自述文件,因此,docker ignore文件是非常有必要的,

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

6. 多阶段构建(Multi-Stage Builds)

在运行容器的时候不需要测试依赖项、临时文件、开发环境工具、构建工具。但我们docker构建的时候却需要它们

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

image.png

我们分成build和stage两个阶段

build阶段是在以maven为base image并且取名为build的镜像构建打包

stage阶段是在以tomcat为base image的镜像拷贝build镜像里生成新的包,并运行应用程序,第一阶段的依赖工具被丢弃。

1035234-20181020215539574-213176954.png

7. 使用最小权限的用户

1035234-20181020215539574-213176954.png

有的镜像中已经捆绑了一个默认的专用用户,例如node:10-alpine中有node用户。

1035234-20181020215539574-213176954.png

8. 构建镜像时要扫描安全漏洞

docker login 登陆仓库

1035234-20181020215539574-213176954.png

docker scan参数:

Options: 
      --accept-license    接受使用第三方扫描提供商 
      --dependency-tree   显示带有扫描结果的依赖树 
      --exclude-base      从漏洞扫描中排除基础镜像 (requires --file) 
  -f, --file string       与image关联的Dockerfile,提供更详细的结果 
      --group-issues      聚合重复的漏洞并将其分组为1个漏洞 (requires --json) 
      --json              以json格式输出结果 
      --login             使用可选令牌(带有--token)向扫描提供程序进行身份验证,如果为空则使用web base令牌 
      --reject-license    拒绝使用第三方扫描提供商 
      --severity string   只报告提供级别或更高的漏洞(low|medium|high) 
      --token string      登录到第三方扫描提供程序的认证令牌 
      --version           显示扫描插件版本 
#指定Dockerfile
$ docker scan -f Dockerfile myapp:1.0
#不扫描该镜像的基础镜像
$ docker scan -f Dockerfile --exclude-base  myapp:1.0
#以json显示
docker scan --json  myapp:1.0 | jq
#聚合分组显示扫描信息
$ docker scan --json --group-issues myapp:1.0
#显示指定级别的漏洞,只有高于此级别的漏洞才会显示出来
$ docker scan --severity=medium  myapp:1.0

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png


相关文章
|
6天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
165 28
|
2天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
2天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
2天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
8天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
66 2
|
9天前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
18 1
|
16天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
62 7
|
15天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
51 6
|
11天前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
14天前
|
负载均衡 应用服务中间件 nginx
基于Nginx和Consul构建自动发现的Docker服务架构——非常之详细
通过使用Nginx和Consul构建自动发现的Docker服务架构,可以显著提高服务的可用性、扩展性和管理效率。Consul实现了服务的自动注册与发现,而Nginx则通过动态配置实现了高效的反向代理与负载均衡。这种架构非常适合需要高可用性和弹性扩展的分布式系统。
23 4
下一篇
无影云桌面