重要的概念
docker是用来运行一个应用的,而非一台机器,不能等同于虚拟机对待
- 镜像: 类似于虚拟机的快照,非常非常轻量
- 公共镜像很多,基本不会从头创建一个镜像,一般都是在现有镜像基础上创建新镜像
- 创建一个镜像
- 在一个文件中指定一个基础镜像以及需要完成的修改
- 运行一个镜像,对齐修改后再提交
- 镜像拥有唯一的ID,以及一个姓名和标签对.镜像命名类似于 ubuntu:latest.django:1.6
- 容器:
- 可以从镜像中创建容器;应用是由容器运行的,使用过程类似如下: 下载一个ubuntu容器-->安装nodejs及其依赖项-->创建一个容器===>运行你的应用
- 容器也用为唯一的id和name,可以对外公开特定端口;是单进程的
- 停止一个容器的时候,未保存的修改会丢失??
- 数据卷
- 不受容器声明周期影响进行数据持久化
- 表现为容器内的空间,实际保存在容器之外
- 容器是短暂的一次性的,应用部分和数据部分分离的
- 链接
- 容器启动时,将被分配一个私有ip,其他容器或者宿主机可以使用这个ip与其通信
- 容器间的链接通信是可以限制的
- 如果DB容器已经在运行,我可以创建web服务器容器,并在创建时引用这个DB容器,给它一个别名,比如dbapp。在这个新建的web服务器容器里,我可以在任何时候使用主机名dbapp与DB容器进行通讯
- Docker更进一步,要求你声明容器在被链接时要开放哪些端口给其他容器,否则将没有端口可用
常用指令
- 拉取一个image: docker pull ubuntu:latest