一、介绍
1、Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。几乎没有性能开销,可以很容易地在机器和数据中心中运行。
2、Docker的特性:
(1)统一的打包格式
Docker定义了一种统一标准的打包格式,可将应用及其依赖打包到单个的镜像。
(2)交互式Shell
Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。
(3)版本控制
Docker的版本控制类似于Git,Docker可以跟踪一个容器的版本信息,查看版本差异,提交或回滚版本等。
(4)组件复用
Docker容器以组件的方式搭建,可以利用一个基础镜像构建更多的应用容器。
(5)共享镜像
Docker用于一个公共的注册服务器,无数的开发者上传了他们的镜像,这些镜像包罗万象,基本上各种应用领域、应用场景都可以找到相应的镜像。
3、Docker包含三大核心组件:镜像、容器和库。
(1)镜像
镜像是一个只读的静态模板,保存了容器需要的环境和应用的执行代码。镜像采用分层机制,每个镜像都是只读的,但可以将写数据的层通过联合文件系统附加到原有的镜像上。这样镜像就很易于存储、传输和更新。
(2)容器
容器是一个运行时环境,是镜像的运行状态,是镜像执行的动态表现。容器提供了应用的统一的运行方式:创建、开始、停止、重启、销毁。
(3)库
Docker采用注册服务器来存储和共享用户的镜像,库是某个特定用户存储镜像的目录。通常一个用户可以建立多个库来保存自己的镜像。库是注册服务器的一部分,注册服务器分公有的和私有的,公有的如Docker官方提供的Docker Hub。
4、Docker容器使用AUFS作为文件系统,有如下优势:
(1)节省存储空间
多个容器可以共享同一个基础镜像存储。
(2)快速部署
如果部署多个来自同一个基础镜像的容器时,可以避免多次复制操作。
(3)升级方便
升级一个基础镜像即可影响到所有基于它的容器。
(4)增量修改
可以在不改变基础镜像的同时修改其目录的文件,所有的更高都发生在最上层的写操作层,增加了基础镜像的可共享内容。
二、CentOS 7上安装Docker 1.8
1、不管你的系统版本是多少,Docker都要求64位。并且当CentOS7时你的内核必须不小于3.10。
检查当前内核版本:
# uname -r
3.10
.
0
-
229
.el7.x86_64
|
2、安装
有两种方式可安装Docker Engine。脚本安装和yum安装。下面介绍下脚本安装:
(1)使用root权限登陆系统。
(2)更新系统包到最新。
(3)执行Docker安装脚本,这个脚本会添加docker.repo
配置并安装Docker。
# curl -sSL https:
# yum install -y docker-selinux
|
(4)启动Docker
# systemctl start docker.service
|
(5)验证docker已经正常安装
三、使用
1、Docker的好处就是提供了一个类似github的Image仓库管理,你可以非常方便pull别人的Image下来运行,例如,我们可以下载一个ubuntu Image:
docker pull ubuntu:
13.10
|
这里的13.10是一个Tag,类似于git的tag,这里的tag可以为你制定一个ubuntu的版本。
2、下载完成后,执行docker images命令可以列出你已经下载或者自己构建的image:
[root
@zy
-test-
2
~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
zy167761/centos zy 4c83c3c94046
10
days ago
733.1
MB
zy167761/hello-world zy 690ed74de00f
5
months ago
960
B
ubuntu
13.10
7f020f7bf345
21
months ago
184.5
MB
|
3、运行一个Container,命令很简单,例如我们想运行一个执行Shell终端的Container:
[root
@zy
-test-
2
~]# docker run --name ubuntu_test -it ubuntu:
13.10
/bin/bash
root
@27892d0208cc
:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root
@27892d0208cc
:/#
|
四:命令
# 下载ubuntu
12.04
镜像
sudo docker pull ubuntu:
12.04
# 创建一个容器运行bash应用
sudo docker run -t -i ubuntu:
12.04
/bin/bash
# 其中,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。
# -d:以daemon方式运行容器
sudo docker run -d ubuntu:
14.04
/bin/sh -c
"while true; do echo hello world; sleep 1; done"
# 显示本地已有的镜像
sudo docker images
# 修改image名字,从docker.sankuai.com/ubuntu:
12.04
改为ubuntu:
12.04
sudo docker tag docker.sankuai.com/ubuntu:
12.04
ubuntu:
12.04
# 修改image,并提交
sudo docker commit -m
"Added json gem"
-a
"Docker Newbee"
0b2616b0e5a8 ouruser/sinatra:v2
# 镜像上传到仓库中来共享
sudo docker push ouruser/sinatra
# 保存镜像到本地
sudo docker save -o ubuntu_14.
04
.tar ubuntu:
14.04
# 从本地文件导入镜像库
sudo docker load --input ubuntu_14.
04
.tar
# 查看运行状态的容器
sudo docker ps
# 查看终止状态的容器
sudo docker ps -a
# 启动/停止/重启容器
sudo docker start/stop/restart NAMES
# 进入容器
sudo docker attach NAMES
# 在容器内运行交互命令
sudo docker exec -t -i daemon_dave /bin/bashVersion
|
比较详细的docker命令 http://www.simapple.com/docker-commandline