docker使用问题总结

本文总结了 Docker 的核心概念,包括系统虚拟化与容器虚拟化的差异,并详细介绍了 Dockerfile 的编写技巧,如如何避免缓存问题。还涵盖了 Docker 空间管理,如 Swarm 基本指令,以及遇到的常见错误及其解决方案,如证书过期、网络问题等。此外,还提到了 Docker 配置文件格式错误的解决方法以及 Docker 集群部署时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概念解读

系统虚拟化与容器虚拟化

系统虚拟化,Hypervisor Virtualization,全虚拟化。在 Host 中通过 Hypervisor 层实现安装多个 GuestOS。每个 GuestOS 都有自己的内核,和主机的内核不同,GuestOS 之间完全隔离。
容器虚拟化,Operating System Virtualization ,使用 Linux 内核中的 namespaces 和 cgroups实现进程组之间的隔离。是用内核技术实现的隔离,所以它是一个共享内核的虚拟化技术。

注:容器虚拟化没有 GuestOS,使用 Docker 时下载的镜像,只是为运行 App 提供的一个依赖的环境,是一个删减版本的系统镜像。一般情况下系统虚拟化没有容器虚拟化的运行效率高,但是系统安全性高很多。

知识点总结

Dockerfile编写

  • 将RUN apt-get update和apt-get install组合成一条RUN声明。
    如果将apt-get update放在一条单独的RUN声明中会导致缓存问题以及后续的apt-get install失败。
  • 指令过apt-get install相关指令后,需要清理掉apt缓存。
     rm -rf /var/lib/apt/lists/*

注意:官方的 Debian 和 Ubuntu 镜像会自动运行apt-get clean,所以不需要显示的调用apt-get clean。

  • ADD和COPY的使用
    • 虽然ADD和COPY功能类似,但一般优先使用COPY。因为它比ADD更透明。
    • COPY只支持简单将本地文件拷贝到容器中,而ADD有一些并不明显的功能(比如本地 tar 提取和远程 URL 支持)。因此,ADD的最佳用例是将本地 tar 文件自动提取到镜像中。
    • 如果你的 Dockerfiles 有多个步骤需要使用上下文中不同的文件。单独COPY每个文件,而不是一次性COPY完。这将保证每个步骤的构建缓存只在特定的文件变化时失效。
    • 为了让镜像尽量小,最好不要使用ADD指令从远程 URL 获取包,而是使用curl和wget。这样你可以在文件提取完之后删掉不再需要的文件,可以避免在镜像中额外添加一层。
      注:ADD指令不能和其他指令合并,所以前者ADD指令会单独产生一层镜像。而后者可以将获取、提取、安装、删除合并到同一条RUN指令中,只有一层镜像。

docker空间管理

 ## 查看空间
     docker system df
 ## 查看volume容器
    docker volume ls(查看volume容器id:docker volume ls -qf dangling=true)
 ##  删除所有容器
    docker rm `docker ps -a -q`
 ## 删除所有关闭的容器
    docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm(docker rm $(sudo docker 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值