功能
- 软件程序可移植的轻量容器
- 软件可以在安装了docker的系统上执行,而不用关心
- 隔离应用依赖,创建应用镜像
Docker镜像
- 类似虚拟机的快照,但是更为轻量
- 镜像拥有唯一ID,并有名字和标签对用于阅读
- 镜像是一个json,指定了从该镜像运行的容器的特性,如union装载点等
容器
- 被设计用于单线程,如果有多线程,可以使用exec命令运行具体程序
- 当停止容器时,对镜像所做的变化会丢失,也即容器内的数据除了数据卷等都受到容器本身的生命周期限制。
- 容器是短暂的和一次性的
数据卷
- 数据卷表现为容器内的空间,但是不受容器的生命周期影响
- 卷保存在运行docker的文件宿主系统上
- 卷还可以用于数据共享
链接
- 容器启动,将被分配一个随机的私有ip地址,便于容器间通信,形成本地网络
- 链接:要开启容器间通讯,可以在容器创建时以别名引用其它现存容器,则这两个容器链接在了一起
- 要求声明容器被链接时要开放那些端口给其它容器,否则就没有端口可用
镜像的可移植性
- 可以在镜像中定义卷,但是要放在默认位置
- 可以定义要公开给其它容器的端口,不能制定被公开的端口
- 不能在镜像上定义链接,因为需要使用名字来引用其它容器,但不知道对方如何命名容器
文件系统
- cgroup提供容器隔离
- linux内核功能
- 限制资源占用
- 为进程组制作pid,uts,ipc,网络,用户,装载命名空间,如pid命名空间
- union保存镜像幷使容器变得短暂
- 文件系统可以被装载在其它文件系统之上
- 新版本的镜像只是旧版本镜像上的一个新union文件系统,这使得docker镜像非常轻
命令1
1. docker pull
docker pull ubuntu:latest
从公共registry下载镜像
2. docker images
列出你的所有镜像
3. docker run
运行镜像
docker run --rm -ti ubuntu /bin/bash
- --rm 一旦运行的进程退出后就删除容器
- -ti 打开伪终端进入交互模式
- -d 以后台模式运行
- ubuntu 要运行的镜像
- /bin/bash 要运行命令