Docker技术详解
一.什么是Docker
Docker 是 Docker.Inc 公司开源的一个基于 LXC技术之上构建的Container容器引擎, 源代码托管在 GitHub 上, 基于Go语言并遵从Apache2.0协议开源。 Docker在2014年6月召开DockerConf2014技术大会吸引了IBM、Google、RedHat等业界知名公司的关注和技术支持,无论是从 GitHub上的代码活跃度,还是Redhat宣布在RHEL7中正式支持Docker, 都给业界一个信号,这是一项创新型的技术解决方案。 就连 Google 公司的 Compute Engine 也支持 docker 在其之上运行, 国内“BAT”先锋企业百度Baidu App Engine(BAE)平台也是以Docker作为其PaaS云基础。现在主流的linux系统都支持Docker技术。
二.Docker核心概念
Docker的大部分操作都是围绕着它的三大核心概念——镜像、容器和仓库而展开。因此,掌握这三大概念尤为重要。
1. Docker镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板,当要创建Docker容器时,就是在这个模板的基础上加上一个可写层。
2. Docker容器
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。容器是Docker镜像创建的运行实例,Docker容器只保留一些你自己特有的东西,有镜像那块的东西不保留,例如:保留一些用户权限、进程空间等。
3. Docker仓库
Docker仓库类似于一个git仓库,不过它存的是Docker镜像文件,自己修改的文件要保留到Docker仓库,必须先生成一个新的Docker仓库,所以一般小的修改只保留到Docker容器,不上传到Docker仓库
二.Docker的使用
1.获取镜像
镜像的获取一般是在Docker Hub网站上,可以直接使用docker pull命令直接从Docker Hub镜像源来下载镜像。该命令的格式为docker pull NAME[:TAG],例如:docker pull ubuntu:16.04。如果是从其他镜像源下载,需要在pull后面加上地址,比如:docker pull hub.c.163.com/public/Ubuntu:16.04。
2.查看镜像信息
使用docker images 命令可以列出本机上已有镜像的信息(注意images有s)。
例如:docker images
REPOSITORY TAG TMAGE ID CREATED SIZE
Ubuntu 16.04 2ffljhj34h89 2hours ago 122M
使用inspect命令查看详细信息
docker inspect可以获取该镜像的作者、适应框架、各层数字摘要等。
docker inspect ubuntu:16.04
4. 搜寻镜像
使用docker search命令可以搜索远端仓库中共享的镜像,其中有一下参数
--automated=true|false 显示自动创建的镜像,默认为否
--no-trunc=true|false 输出信息不截断,默认为否
-s number 指定仅显示评价为number星级以上的镜像
例如:docker search –automated –s 3 nginx 搜索所有自动创建的评价为3以上的带nginx关键字的镜像
5. 删除镜像
docker rmi ubuntu:16.04 删除镜像为16.04版本的ubuntu
可以这么理解,rmi就是remove image的缩写
当存在此对象对应的容器时,使用该方法删除不能镜像,可以先删除容器在删除镜像,容器的删除在后面讲解。
6. 创建镜像
docker commit –m “add a new file” –a “paul” as2hj3gy5ty5 docker_paul:14.04
注解:docker commit –m是提交为一个新镜像的一般格式,“add a new file”是提交时的文件说明,-a是参数选项,表示后面要接作者信息,“paul”是作者信息,as2hj3gy5ty5是当前这个容器的id,docker_paul:14.04是提交上去的镜像repository和tag。
7. 上传镜像
docker push docker_paul:14.04
将刚才创建的镜像上传到仓库中。