本文来自依云'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 理解起来就容易多了,行为也更符合预期。
Feb 11, 2019 01:32:30 PM
docker的确是个好东西,一次编写,到处运行。从此抛弃openvz小鸡,上了kvm的贼船。
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
Feb 12, 2019 05:29:26 PM
请教下仙子, 大于3.18(docker 文件系统最低要求)的kernel哪个版本比较稳定?踩到坑了。。。
Feb 12, 2019 06:48:55 PM
我一直用比较新的稳定版本,比如现在用的 4.19.19。(4.20 还没有稳定版的 zfs 支持。)
Feb 16, 2019 08:12:30 PM
每次用 Docker 找命令都得 Google 找文档看 (笑哭
Feb 19, 2019 12:39:13 PM
最后从3.10升级到了4.20.。。overlayfs问题解决了.
原来升级内核就是装个包,本以为有个很长很长的guide。。。
Feb 19, 2019 04:50:33 PM
是啊,普通发行版升级内核就是装个包,然后重启一下。不过如果你有自行安装的内核模块(没有通过软件源安装也没有使用 dkms 自动维护),需要再安装一下。如果编译不通过就麻烦了。
Feb 24, 2019 09:33:33 PM
运行的docker单机的话用docker-compose吧,docker run太不方便了。而且docker-compose可以定义自动重启。
Feb 25, 2019 01:24:07 PM
嗯,有空了学一下~