Docker入门教程(镜像)
联合系统文件
镜像的基础是联合系统文件(UnionFS)
这个联合文件系统我们可以简单地理解为把多个目录挂载到一个目录下.
举个栗子:
有A,B,C三个目录.A目录下有a.txt和z.txt文件;B目录下有b.txt和z.txt文件,C目录为空.
|-- A
| |-- a.txt
| `-- z.txt
|-- B
| |-- b.txt
| `-- z.txt
`-- C
那么联合文件系统就可以实现把a.txt,b,txt,z.txt挂载到C目录下,如下是Linux的mount命令:
sudo mount -t aufs -o dirs=./A:./B none ./C
-t aufs : 使用 AUFS 文件系统;
-o dirs=./A:./B : 把 目录 A 和目录 B 联合在一起 : 后面可以跟读写权限;比如 ./A:rw:
none : 不需要设备;
./C : 将前面的目录联合到 C 目录下;
执行命令后的效果是这样的:
|-- A
| |-- a.txt
| `-- z.txt
|-- B
| |-- b.txt
| `-- z.txt
`-- C
|-- a.txt
|-- b.txt
`-- z.txt
当我们修改C目录下的a.txt时就相当于修改A目录下的a.txt文件,但是如果修改C目录下的z.txt文件只有A目录下的z.txt文件会被修改,原因是mount在没有指定权限时默认最左边的目录可读写,后面的目录只读.
这样我们可以引申出层的概念;
就是把文件分为只读、以及读写的层;
我们可以一层一层的加东西了;
这就有点 Git 的 commit 的感觉了;
好了;上面这些作为了解即可;
下面进入主题
Docker 常用命令(罗列几个和镜像有关的命令)
- 拉取镜像,如果不指定版本则拉取latest版
docker pull ubuntu
也可以指定版本
docker pull ubuntu:19.04
- 列出镜像列表
docker image
- 删除镜像,注意需要指定imagine id
docker rmi cfcdd3336ca3
或者也可以使用repository + tag
docker rmi ubuntu:latest
早期的 Docker 使用的 AUFS ; 16.04 以后的版本已经换成 overlay2 ;
docker pull 成功拉取的镜像存储在 /var/lib/docker/overlay2 目录;
这里面的目录最终会通过联合文件系统合并成一个 Ubuntu .