01_容器化技术 没用
1、物理机、虚拟机、容器三者之间的区别?
-
虚拟机是底层计算资源的隔离
-
应用层面的隔离
2、容器化技术应用到的Linux内核技术有哪些?
-
namespace
-
Linux内核用来隔离内核资源的方式
-
在同一个 namespace 下的进程可以感知彼此的变化,而对外界的进程一无所知
-
6个namespace
-
UTS 提供主机名隔离
-
PID 提供进程隔离
-
IPC 提供进程间通信隔离
-
Network 提供网络隔离
-
User 提供用户隔离
-
Mount 提供硬盘挂载点和文件系统的隔离能力
-
-
-
cgroups
-
一个容器如果不对其做任何资源限制,则宿主机会允许其占用无限大的内存空间,有时候会因为代码bug程序会一直申请内存,直到把宿主机内存占完。
-
为了避免此类的问题出现,宿主机有必要对容器进行资源分配限制,比如CPU,内存等,Linux Cgroups的全称是Linux Control Groups,它最主要的作用就是限制一个进程组能够使用的资源上限,包括CPU,内存,磁盘,网络带宽等等。
-
3、docker容器技术生态
4、使用容器安全吗?
Docker 利用了 Linux 内核中很多安全特性来保证不同容器之间的隔离,并且通过签名机制来对镜像进行验证。大量生产环境的部署证明,Docker 虽然隔离性无法与虚拟机相比,但仍然具有极高的安全性。
5、如何清理后台停止的容器?
docker rm $(docker ps -a -q)
6、如何查看容器镜像支持的变量
docker run centos:latest env
7、容器启动报错排除方法
docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "/bash/sh": stat /bash/sh: no such file or directory: unknown.
8、容器本地镜像存放位置
/var/lib/docker
9、Docker容器管理工具与Containerd容器管理工具各自优势
-
Docker
-
生态更全
-
技术更完善
-
占用主机资源更多
-
-
Containerd
-
轻量级或工业级
-
占用主机资源少
-
技术体系不完善
-
10、关于Dockerfile使用频率
在企业内部发布应用时,一般都需要团队自己创建业务容器镜像,特别是在使用CI/CD体系发布业务代码时,Dockerfile是非常重要的组成部分。
11、构建Docker镜像应该遵循哪些原则?
在整体原则上,尽量保持镜像功能的明确和内容的精简,要点包括:
-
尽量选取满足需求但较小的基础系统镜像
-
清理编译生成文件、安装包的缓存等临时文件
-
安装各个软件时候要指定准确的版本号,并避免引入不需要的依赖
-
从安全的角度考虑,应用尽量使用系统的库和依赖
-
使用Dockerfile创建镜像时候要添加.dockerignore文件或使用干净的工作目录
12、如何快速结束正在运行的容器
docker kill $(docker ps -q)
13、容器退出后,通过docker ps 命令查看不到,数据会丢失么?
容器退出后会处于终止(exited)状态,此时可以通过 docker ps -a 查看,其中数据不会丢失,还可以通过docker start 来启动,只有删除容器才会清除数据。
14、容器中数据持久化存储是如何实现的?
可能通过挂载本机存储卷的方式,或使用远程存储服务器。
15、docker compose适合企业生产环境吗?