docker是一个用了一种新颖方式实现的超轻量虚拟机,在实现的原理和应用上还是和vm有巨大差别,专业的叫法是应用容器(application container)。(我个人还是喜欢称虚拟机)
1. 安装
1.1 在 ubuntu 14.04 上安装 docker
前提要求:
内核版本必须是3.10或者以上
依次执行下面的步骤:
至此,安装过程完成。
运行 sudo service docker start 启动 docker 守护进程。
运行 docker version 查看 docker 版本
启动第一个容器:
启动第一个docker 容器 docker run hello-world
它的运行成功也表明前面的安装步骤都运行正确了。
以上内容参考自 docker 官网:https://docs.docker.com/engine/installation/linux/ubuntulinux/
1.2 docker 到目前(2016/09/16)为止的版本历史
2. docker 的基本操作
2.1 docker 容器的状态机
一个容器在某个时刻可能处于以下几种状态之一:
created:已经被创建 (使用 docker ps -a 命令可以列出)但是还没有被启动 (使用 docker ps 命令还无法列出) running:运行中 paused:容器的进程被暂停了 restarting:容器的进程正在重启过程中 exited:上图中的 stopped 状态,表示容器之前运行过但是现在处于停止状态(要区别于 created 状态,它是指一个新创出的尚未运行过的容器)。可以通过 start 命令使其重新进入 running 状态 destroyed:容器被删除了,再也不存在了你可以在 docker inspect 命令的输出中查看其详细状态:
2.2 docker 命令概述
我们可以把docker 的命令大概地分类如下:
比较有意思的几个命令:
(1)容器从生到死整个生命周期
(2) docker stop 和 docker kill
在docker stop 命令执行的时候,会先向容器中pid为1的进程发送系统信号 sigterm,然后等待容器中的应用程序终止执行,如果等待时间达到设定的超时时间(默认为 10秒,用户可以指定特定超时时长),会继续发送sigkill的系统信号强行kill掉进程。在容器中的应用程序,可以选择忽略和不处理sigterm信号,不过一旦达到超时时间,程序就会被系统强行kill掉,因为sigkill信号是直接发往系统内核的,应用程序没有机会去处理它。
比如运行 docker stop web5 -t 20 命令后:
2016-09-16t16:01:18.206540853+08:00 container kill b3256ef1400a7f6a6f242e377a77af5e25d3b12237c4ee7c2e9b31a5f6437868 (image=training/webapp, name=web5, signal=15)
2016-09-16t16:01:38.212352224+08:00 container kill b3256ef1400a7f6a6f242e377a77af5e25d3b12237c4ee7c2e9b31a5f6437868 (image=training/webapp, name=web5, signal=9)
2016-09-16t16:01:38.235021315+08:00 container die b3256ef1400a7f6a6f242e377a77af5e25d3b12237c4ee7c2e9b31a5f6437868 (exitcode=137, image=training/webapp, name=web5)能看到:
首先 docker 向容器发出 sigterm 信号(signal=15) 等待20秒 (01:18 到 01:38) 再发送 sigkill 系统信号 (signal = 9) 然后容器被杀掉了 (die)而 docker kill 命令会直接发出sigkill的系统信号,以强行终止容器中程序的运行。运行 docker kill web5 命令后:
2016-09-16t16:06:44.351086471+08:00 container kill b3256ef1400a7f6a6f242e377a77af5e25d3b12237c4ee7c2e9b31a5f6437868 (image=training/webapp, name=web5, signal=9)
2016-09-16t16:06:44.365116100+08:00 container die b3256ef1400a7f6a6f242e377a77af5e25d3b12237c4ee7c2e9b31a5f6437868 (exitcode=137, image=training/webapp, name=web5)
可见直接发出的是 sigkill 信号,容器立马就被杀掉了。(3)使用 docker cp 在 host 和 container 之间拷贝文件或者目录
(4)docker export 和 import
docker export:将一个容器的文件系统打包为一个压缩文件
docker import:从一个压缩文件创建一个镜像
2.3 docker run 命令
docker run 命令会创建一个容器并启动它,它也是包含很多的参数,按照用途将它们分类如下:
具体的内容以后会有专门文件分析。
3. doker 平台的基本构成 docker 平台基本上由三部分组成:
客户端:用户使用 docker 提供的工具(cli 以及 api 等)来构建,上传镜像并发布命令来创建和启动容器 docker 主机:从 docker registry 上下载镜像并启动容器 docker registry:docker 镜像仓库,用于保存镜像,并提供镜像上传和下载后面的文章会具体分析。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。