Docker 是一个轻量型虚拟机,它与虚拟机最大的区别是 Docker 不会虚拟出一个完整的操作系统,它套用宿主机的内核,因此,在 Linux 上只能使用 Linux 容器, Windows 亦如此,如果需要在 Windows 运行容器,那么需要在虚拟机中运行

Docker 技术本质上属于对资源隔离的应用,cgroup 和 namespace 使得容器技术成为可能。每个容器被限制在它自己的环境中,它感知到自己是一个完整的操作系统,但是实际上容器内的所有命令都是由宿主机完成的, 宿主机拥有对容器中二进制文件的感知能力 。因此,容器中命令的执行会受到宿主机 SELinux 等 MAC 的控制,SELinux 可以对容器中命令的执行进行拦截,即使容器中实际上并没有安装 SELinux。

Docker 技术基于 LXC ,每个容器都被隔离在 /var/lib/docker/containers 中的单独环境中。更近一步的说, Docker 是 chroot 技术的进化。

容器涉及到两个基础概念:镜像和容器

  • 镜像是储存在硬盘中、包含操作系统和必要运行时的二进制文件

  • 容器是镜像的运行时,是带有运行时配置的的镜像。

  • Linux Containers

  • systemd-nspawn

  • chroot

镜像的导入和导出

导出镜像分为两种:

动作

作用对象

export-import

运行中的镜像

save-load

pull 下来的镜像

export-import 用来将 run 后的镜像导出,导出后丢失依赖层信息

save-load 用来将 pull 下来的镜像导出,导出后保留依赖层信息,但是会丢失 tag 信息

在 docker 中启用 NVIDIA

Last moify: 2024-01-05 01:58:07
Build time:2025-07-18 09:41:42
Powered By asphinx