简介
Docker: world’s leading software containerization platform*.
VM vs. Docket:
Docker基于LXC(Linux容器),在LXC的基础上进一步封装,使得操作更简单,就像操作一个轻量级的虚拟机一样。
相比虚拟机的优势:
- 启动更快,可以在秒级启动
- 对系统的资源利用率更高(在内核级别进行虚拟化)
- 更快速的交付和部署
- 更高效的虚拟化(不需要hypervisor支持)
- 更容易迁移和扩展(镜像)
- 更容易管理
三个Docker基本概念
- Image(镜像):类似于模板,例如包含完整的CentOS系统,并安装了JRE。镜像用于创建Docker容器。创建、修改镜像都很简单。
- Container(容器):Docker利用容器来运行应用,可以从镜像中创建运行实例,可以被启动、停止、删除,每个容器相互隔离。
- Repository(仓库): 几种存放Docker镜像的场所。最大的仓库未Dockey Hub,国内有时速云、网易云等。一个仓库包含多个镜像。仓库可以分为私有和共有。私有的仓库可以push和pull。仓库注册服务器(Registry)往往包含多个仓库。
CentOS安装Docker
要求64位操作系统,内核至少为3.10.
目前支持CentOS 6.5以后的版本,推荐使用CentOS 7
添加yum软件源,更新:
安装docker-engine:
sudo yum install docker-io-y
启动docker
serveice docker start
serveice docker staus
# docker (pid 1535) is running...
配置Docker跟随系统启动:
sudo chkconfig docker on
运行hello world:
docker run hello-world
此时因为本地没有该镜像,因此会去远程仓库下载:
查看当前可用的镜像:
docker images
docker ps 命令查看当前的容器:
docker ps -l
下载个Ubuntu镜像:
docket pull ubuntu:12.94
运行容器:
docker run -t -i ubuntu:12.94 cat /etc/debian_version
可以两个命名合并:
docker run --name myubuntu ubuntu:12.94 cat /etc/debian_version
其中–name参数给容器指定一个名称,方便后续操作(例如start,stat,stop)。
交互式进入ubuntu:
docker run -it ubuntu /bin/bash
使用Dockerfile创建镜像
Dockerfile基本语法:
- #:注释
- From:指定基础镜像
- RUN:运行命令,例如yum,或者apt-get安装软件
例子:
# my first image
FROM ubuntu:14.04
MAINTAINER Brandon
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra
编写完Dockerfile之后,使用docker build命令创建镜像:
sudo docket build -t="ouruser/sinatra:v2" .
-t参数指定tag,注意后面的”.”,表示dockerfile在当前目录下。
镜像是一层层(layer)组成的
UnionFS
导入/导出镜像到本地:
- docker save: 导出镜像到本地文件
- docker load: 从本地文件导入到本地镜像库
- docker rmi: 移除本地镜像库