文章目录
背景介绍
现在没有docker,已经要不配开源代码了。
所以,准备重新配置环境。
什么是Docker
Docker 是一个开源的容器化平台,用于开发、部署和运行应用程序。它的核心思想是:将应用程序及其所有依赖项(代码、运行时环境、系统工具、库等)打包到一个标准化的、可移植的“容器”中。这个容器可以在任何安装了 Docker 的环境中运行,保证环境的一致性。
Docker 的核心在于 容器化。通过将应用及其环境打包成 镜像,然后在隔离的 容器 中运行这些镜像,解决了环境不一致、依赖冲突、部署复杂等问题。使用步骤通常是:安装 Docker -> 获取镜像 (pull) -> 运行容器 (run) -> 管理容器 (ps, stop, rm, logs, exec) -> (可选)编写 Dockerfile 构建自定义镜像 (build)。掌握这些基础后,再学习 Docker Compose 和卷/网络管理能让你更高效地使用 Docker。
核心概念:
镜像:
一个只读的模板,包含了运行应用程序所需的所有文件系统结构、依赖项、代码和配置。镜像是创建容器的“蓝图”。类比:镜像就像安装操作系统的 .iso 文件,或者面向对象编程中的“类”。
容器:
镜像是静态的,容器是镜像的运行实例。当你运行一个镜像时,Docker 会创建一个隔离的环境(容器),其中运行着镜像定义的应用程序。容器是轻量级、可移植、自包含的。类比:容器就像是从 .iso 文件安装好的、正在运行的虚拟机(但比虚拟机轻量得多),或者面向对象编程中类的“实例对象”。
Dockerfile:
一个文本文件,包含了一系列构建 Docker 镜像所需的指令(如安装软件、复制文件、设置环境变量、暴露端口等)。开发者通过编写 Dockerfile 来定义如何构建他们的应用程序镜像。
Registry:
存储和分发 Docker 镜像的服务。Docker Hub 是最著名的公共 Registry,包含大量官方和社区维护的镜像(如 Ubuntu, Nginx, MySQL, Python, Node.js 等)。也可以搭建私有的 Registry(如 Harbor, GitLab Container Registry)。
Docker 的主要优势:
环境一致性:
“一次构建,处处运行”。开发、测试、生产环境完全一致,避免“在我机器上是好的”问题。
隔离性:
容器之间以及容器与宿主机之间是相互隔离的,一个容器的问题不会影响其他容器或主机。
轻量高效:
容器共享宿主机的操作系统内核,无需为每个应用加载完整的操作系统,启动更快,资源占用(CPU、内存、磁盘)远低于虚拟机。
可移植性:
容器可以在任何支持 Docker 的平台上运行(Linux, Windows, macOS, 云服务器)。
标准化:
Docker 提供了构建、分发、运行容器的标准方式。
微服务友好:
非常适合构建和部署微服务架构,每个服务可以独立容器化。
简化配置:
将环境配置固化在镜像或 Docker Compose 文件中。
快速扩展:
可以快速启动多个相同的容器实例以实现水平扩展。
如何在ubuntu系统中使用docker
在 Ubuntu 系统中使用 Docker 时,关于 NVIDIA 驱动、Ubuntu 版本和 Kernel(内核)的配置,需要明确以下几点:
NVIDIA 驱动
宿主机必须安装 NVIDIA 驱动
Docker 容器本身不安装或管理宿主机级别的硬件驱动。
若要在容器内使用 GPU(如运行 CUDA 应用),必须先在 Ubuntu 宿主机上正确安装 NVIDIA 驱动(通过 apt 或官方 .run 文件安装)。
容器内只需安装 CUDA Toolkit
容器内只需安装与应用程序兼容的 CUDA Toolkit 或 cuDNN 库(如 nvidia/cuda 官方镜像已包含)。
容器通过 Docker 的 --gpus 参数调用宿主机的驱动。
Ubuntu 版本
容器内的 Ubuntu 版本独立于宿主机
容器基于镜像运行(如 ubuntu:22.04),与宿主机的 Ubuntu 版本无关。
例如:宿主机是 Ubuntu 20.04,仍可运行 ubuntu:18.04 或 debian:12 的容器。
Kernel(内核)
容器共享宿主机的内核
Docker 容器 不拥有独立的内核,而是直接使用宿主机的 Kernel。
执行 uname -r 在容器内看到的版本与宿主机一致。

最低0.47元/天 解锁文章
1233

被折叠的 条评论
为什么被折叠?



