Docker入门
小剧场
🤔: 你在看什么呀?
😎:我在看docker!
🤨:码头装卸工人吗?
Get Docker | Docker Documentation
命令记录
Docker: 容器与管理程序虚拟化
Docker 是一个应用打包、分发、部署的工具
你也可以把它理解为一个轻量的虚拟机,它只虚拟你软件需要的运行环境,多余的一点都不要,
而普通虚拟机则是一个完整而庞大的系统,包含各种不管你要不要的软件。
1 | |
Docker 使用经历
- 2021.11,信息论课程,图像分割项目。当时是使用在服务器安装了docker,然后配置环境。之后还把docker镜像推送到阿里云上。(基于SemSeg的马里亚纳海沟遥感图像场景解析 - CosmicDusty-Blog)
- 2023.05,看到Facebook在GitHub上开源的一个小项目很有意思。按照教程在WSL上使用docker部署了一下环境。(AnimatedDrawings - CosmicDusty-Blog)
- 2024.10,在服务器上部署了Overleaf.(瞧瞧我对服务器干了些什么! - CosmicDusty-Blog)
Docker — 从入门到实践
Docker 包括三个基本概念
镜像(
Image)- Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。
容器(
Container)- 镜像(
Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 镜像(
仓库(
Repository)镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
一个 Docker Registry 中可以包含多个 仓库(
Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的 官方镜像。除此以外,还有 Red Hat 的 Quay.io;Google 的 Google Container Registry,Kubernetes 的镜像使用的就是这个服务;代码托管平台 GitHub 推出的 ghcr.io。
由于某些原因,在国内访问这些服务可能会比较慢。国内的一些云服务商提供了针对 Docker Hub 的镜像服务(
Registry Mirror),这些镜像服务被称为 加速器。常见的有 阿里云加速器、DaoCloud 加速器 等。使用加速器会直接从国内的地址下载 Docker Hub 的镜像,比直接从 Docker Hub 下载速度会提高很多。在 安装 Docker 一节中有详细的配置方法。国内也有一些云服务商提供类似于 Docker Hub 的公开服务。比如 网易云镜像服务、DaoCloud 镜像市场、阿里云镜像库 等。
image
1 | |
- 使用 Dockerfile 定制镜像
Dockerfile 是一个文本文件,其内包含了一条条的 **指令(Instruction)**,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
container
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(
exited)的容器重新启动。
1 | |
1 | |
1 | |
repository
1 | |