2
7
2019
9

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

本文来自依云's Blog,转载请注明。

首先说明一下,这是一位 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
软件的版本,跟什么 lite、pro、beta 之类区分类似。它并不是用于分类的标签,也不是 git 中对于指定版本的不变的称呼。它更像是 git 的分支在某些情况下的作用,比如 latest tag 就跟 git 仓库的 master 分支一样,总是指向最新的版本。

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

Category: docker | Tags: linux docker | Read Count: 108934
Go 说:
Feb 11, 2019 01:32:30 PM

docker的确是个好东西,一次编写,到处运行。从此抛弃openvz小鸡,上了kvm的贼船。

x b y 说:
Feb 12, 2019 12:49:07 PM

docker 真香!
分享一行我最近经常需要用的指令

docker ps -a | grep Exited | perl -alnE 'say "$F[0]"' | xargs -r docker rm ; docker images | grep '<none>' | perl -alnE 'say $F[2]' | xargs -r docker rmi

x b y 说:
Feb 12, 2019 05:29:26 PM

请教下仙子, 大于3.18(docker 文件系统最低要求)的kernel哪个版本比较稳定?踩到坑了。。。

Avatar_small
依云 说:
Feb 12, 2019 06:48:55 PM

我一直用比较新的稳定版本,比如现在用的 4.19.19。(4.20 还没有稳定版的 zfs 支持。)

DCMMC 说:
Feb 16, 2019 08:12:30 PM

每次用 Docker 找命令都得 Google 找文档看 (笑哭

x b y 说:
Feb 19, 2019 12:39:13 PM

最后从3.10升级到了4.20.。。overlayfs问题解决了.
原来升级内核就是装个包,本以为有个很长很长的guide。。。

Avatar_small
依云 说:
Feb 19, 2019 04:50:33 PM

是啊,普通发行版升级内核就是装个包,然后重启一下。不过如果你有自行安装的内核模块(没有通过软件源安装也没有使用 dkms 自动维护),需要再安装一下。如果编译不通过就麻烦了。

JIN 说:
Feb 24, 2019 09:33:33 PM

运行的docker单机的话用docker-compose吧,docker run太不方便了。而且docker-compose可以定义自动重启。

Avatar_small
依云 说:
Feb 25, 2019 01:24:07 PM

嗯,有空了学一下~


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com