Docker是什么
docker的主要目标是“build、ship and run any APP anywhere”,即通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”。
核心概念
镜像:类似于一个虚拟机镜像,可以将他理解为一个面向docker引擎的只读模板,包含了文件系统
容器:从镜像创建的应用运行实例
仓库:集中存放镜像文件的场所
安装
//centos7,centos-extras源中已内置docker,直接yum安装即可
yum -y install docker
获取镜像
docker pull name [:TAG]
如果不显示的指定TAG,则默认会选择latest标签,即下载仓库中最新版本的镜像。
默认的注册服务器是registry.hub.docker.com
下载过程中可以看出,镜像文件一般由若干层组成,行首的50aff78429b1这样的字串代表了各层的ID,下载过程中会获取并输出镜像的各层信息,层是aufs(advanced union file system)中的重要概念,是实现增量保存与更新的基础。
docker pull ubuntu
上面的命令相当于docker pull registry.hub.docker.com/ubuntu:latest命令

//如果报: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
执行 service docker start即可
下载镜像到本地后,即可随时使用该镜像了,例如利用该镜像创建一个容器,在其中运行bash应用
docker run -it ubuntu /bin/bash
查看镜像信息
使用docker images命令列出本地主机上已有的镜像

Repository:表示来自于哪个仓库
Tag:镜像的标签信息,用于标记来自同一个仓库的不同镜像
ImageID:镜像ID号(镜像唯一标识)
删除镜像
docker rmi IMAGE [IMAGE] //IMAGE可以为标签或ID,当同一个镜像拥有多个标签时,docker rmi命令只是删除了该镜像多个标签中的指定标签而已,并不影响镜像文件
//当有该镜像创建的容器存在时,镜像文件默认是无法被删除的
容器
//创建容器
docker create -it ubuntu:latest //使用docker create命令新建的容器处于停止状态,可以使用docker start命令来启动
//新建并启动容器
docker run ubuntu -it /bin/bash //相当于先create再start
//-t选项让docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开
//-d Docker容器在后台以守护态形式运行
//当利用docker run 来创建并启动容器时,docker在后台运行的标准操作包括:
1. 检查本地是否存在指定的镜像,不存在就从公有仓库下载
2. 利用镜像创建并启动一个容器
3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
4. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
5. 从地址池配置一个IP地址给容器
6. 执行用户指定的应用程序
7. 执行完毕后容器被终止
终止容器
可以使用docker stop [-t|--time[=10]]来终止一个运行中的容器,它会首先向容器发送SIGTERM信号,默认10秒后再发送SIGKILL信号终止容器
docker kill 命令会直接发送SIGKILL信号来强行终止容器
进入容器
docker exec -it CONtainerID /bin/bash //进入指定容器,并启动bash应用
删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
支持的选项包括:
1. -f //强制终止并删除
2. -l //删除容器的连接,但保留容器
3. -v //删除容器挂载的数据卷