62

docker 里几个基本概念的简单类比

 5 years ago
source link: https://blog.lilydjwg.me/2019/2/7/analogy-of-docker-terms-in-software-applications.214087.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

首先说明一下,这是一位 docker 新手对于 docker 的粗浅理解。如有不对还请谅解。我很早之前就尝试过使用 docker,然而由于术语的差异,导致我每次运行东西时都傻乎乎地创建了一个新的容器……现在感觉用法终于是弄对了,所以整理一下,将其类比到 Linux 上的普通软件的概念上。

image 相当于软件分发中的 软件(安装)包 。 Dockerfile 跟 PKGBUILD 类似,是用于制作一个 image 的 打包脚本 。用 docker build -t name:tag . 就可以制作。 container(容器) 一个容器就像是一个 安装好了的软件包 。该软件已经准备好,随时可以运行了。 docker run 「 安装 」指定的 image。也就是从 image 制作出容器来,顺带着进行首次运行。如果反复使用,会把同一个软件给安装多次。 docker start 就像是「 运行 」一个已经安装好的软件,容器跑起来了。之前容器的状态(文件的修改)也会生效。 docker ps 列出 运行中或者已安装(带 -a 参数)的软件们。前者和 UNIX 命令 ps 类似,后者则没什么相似之处了。 docker exec 在正在运行的软件的环境内 执行命令 。有点类似于 ssh。 repository 跟 Linux 的包含众多软件的软件源并不一样。这个东西跟 软件名 类似,用于标识为特定功能的 image 集。发布出来的 repository 名的格式通常是 `owner/name`,跟 GitHub 差不多的。 tag 软件的 版本(edition) ,跟什么 lite、pro、beta 之类区分类似。它并不是用于分类的标签,也不是 git 中对于指定版本的不变的称呼。它更像是 git 的分支在某些情况下的作用,比如 latest tag 就跟 git 仓库的 master 分支一样,总是指向最新的版本。

我经过以上这样的映射之后,docker 理解起来就容易多了,行为也更符合预期。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK