Docker是一个开源的应用容器引擎,基于Go语言,遵守Apache2.0协议开源。Docker允许开发人员将他们的应用程序和依赖项打包到一个轻量级、可移植的容器中,然后将其发布到任何流行的Linux机器上,并且还可以进行虚拟化。Docker容器完全使用沙箱机制,它们之间不会有接口。与虚拟机相比,容器启动速度快,性能开销极低。Docker架构首先介绍一下Docker的架构,可以用下图来表示。它主要由客户端、主机和注册中心组成。下面提到几个专有名词。下面一一介绍一下:ImageDocker镜像,一个创建Docker容器的模板。可以看成是Java中的Class类。容器一个或一组独立运行的容器。启动Images后会生成一个Container,所以可以看成是Java中类的实例化对象。一个Image可以启动多次,生成多个Container。客户端Docker客户端,使用DockerApi与Docker守护进程通信。一般在桌面开发中,下面介绍的Client和Host都在同一个客户端中,这让我们感觉Client和Host是在一起的。其实原理就是两个独立的模块。HostDocker主机,物理机或虚拟机,用于执行Docker守护进程和容器。RegistryDocker仓库,用于保存镜像。Docker官方镜像是https://hub.docker.com/,你可以在注册后存放你自己的镜像。Machinedocker-machine是一个帮助你快速创建和安装docker环境的工具。当我们需要在多台服务器上安装一个Docker环境时,我们可以使用Machine来安装。Docker的常用操作流程在日常工作中,最常用的Docker操作有以下几种,主要包括:本地提交镜像到远程镜像远程获取镜像到本地,在本地进行镜像测试和生产接下来,实际Docker的安装和运行。安装Docker官方这里https://docs.docker.com/install给出了详细的安装过程,按照步骤一步步安装即可,一般不会有什么问题。注意:在Ubuntu系统上安装时,建议使用仓库安装,否则直接使用安装包安装会出现很多依赖问题。Docker基本操作Docker安装完成后,我们可以运行dockerrunhello-world来启动我们的第一个docker容器。一般情况下,docker会在远程仓库下载hello-world后直接启动。Docker的操作主要有两种,一种是Image镜像的操作,一种是Container容器的操作。容器与镜像的关系首先,我们通过下图重新认识一下容器与镜像的关系。简单来说,镜像类似于Classes,容器类似于newobject。另外,图片类似于Class类,也有继承关系。也就是说,一个镜像可以在另一个镜像的基础上增加自己的新功能和需求。这个会在后续制作Docker镜像和Docker文件结构中详细讨论。镜像操作下面是主要的镜像操作,docker[images|rmi|tag|build|history|save|load]images:列出本地镜像列表rmi[镜像名称:版本]:删除镜像标签[镜像名称:版本][仓库]/[镜像名称:版本]:标记本地镜像,放入某个仓库build-t[镜像名称:版本][路径]:Dockerfilecreatemirrorhistory[镜像名称:版本]:查看创建指定镜像Historysave-oxxx.tar[imagename:version]/save[imagename:version]>xxx.tar:将镜像另存为tar归档文件load--inputxx.tar/dockerload
