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 |
|