docker是一个依赖于linux内核的软件。同时是一个典型的C/S架构的软件,分为Docker Client和Docker Server。熟悉github的同窗能够和git作一下对比。linux
通常书上会拿面向对象编程语言的例子来解释,镜像至关于这类语言中的类,而容器则是new出来的对象。我是这样理解的,动手装过操做系统的同窗都知道iso文件吧,这个文件也叫做镜像文件,咱们说的docker镜像就至关于这个iso文件。将这个iso文件执行起来(就是安装操做系统的过程),在内存中创建的模型就是容器了。git
2.镜像的两种获取方式(提到的命令在下一篇中会详细的讲解,有印象便可)github
1.Dockerfiledocker
这种方式是本身写Dockerfile脚本,同shell script相似,可是要简单得多。下文会介绍脚本命令。写完Docker脚本后,能够运行docker build -t tag dockerfile-path(Dockerfile文件路径)
,例如:docker build -t icngor/lamp:2.0 ·
(注意最后的点,表示Dockerfile就在当前目录)shell
dockerHub是docker官方提供的镜像下载中心,第三方网站通常是从这个网站同步的,也能够是由公司内部搭建的。使用docker pull 镜像名称:版本,例如:docker pull icngor/lamp:2.0
编程
经过上面两种方式得到了image(镜像)。接下来使用docker images
查看镜像 centos
* FROM centos:centos6 要构建一个新的镜像,首先须要继承一个已有的镜像。这条指令就是在centos:centos6的基础上进行构建。执行docker build时会下载centos:centos6镜像。 * MAINTAINER 做者信息 * ENV <key> <value> 设置一个系统的环境变量 * COPY <src> <dest>,ADD <src> <dest> 都是将文件复制到容器,ADD与COPY相比多了两个功能,下载URL和解压. * EXPOSE 暴露容器中的端口号 * ENTERYPOINT,CMD,RUN 三者的相同点均可以运行shell命令,下面对比一下三者的不一样点: * RUN是在building image时会运行的指令, 在Dockerfile中能够写多条RUN指令. * CMD和ENTRYPOINT则是在运行container (容器)时会运行的指令, 都只能写一条, 若是写了多条, 则最后一条生效. * CMD和ENTRYPOINT的区别是: CMD在运行时会被command覆盖, ENTRYPOINT不会被运行时的command覆盖 若是要覆盖ENTRYPOINT, 那么能够在docker run运行时输入 --entrypoint="....". * ONBUILD 在子镜像构建过程当中执行的一些通用操做
docker build -t 命名镜像 指定Dockerfile文件的位置 docker images docker run -it -d -p -P -v -e --name docker ps -a docker exec -it tag /bin/bashbash
docker run -it --rm 容器推出口,删除容器架构