Docker是一个开源的引擎,于2013年开源。可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地再生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack集群和其他的基础应用平台。 跨平台,支持Windows,Macos、Linux
官网:Docker官网
(可以理解为可以将整套开发环境高效的移植到另一台服务器中。)
(超级码头)
(不需要关系存储路径,可通过命令实现)
(通过一系列Rest API,实现命令的统一化)
例如jdk版本不一致,tomcat版本等等版本问题。)
Docker的集装箱完美解决。(内存溢出,死循环)
Docker的隔离性完美解决(扩容节点非常麻烦)
Docker的三大核心
使用Docker运行程序的过程:从仓库中把镜像拉到本地,接着通过命令讲镜像运行,变成容器
Docker镜像(Image),是由文件系统叠加而成。最底端是一个文件引导系统,即bootfs。Docker用户不会与引导文件系统有直接的交互。Docker镜像的第二层是root文件系统rootfs,通常是一种或多种操作系统,例如ubuntu等。在Docker中,文件系统永远都是只读的,在每次修改时,都是进行拷贝叠加从而形成最终的文件系统。Docker称这样的文件为镜像。一个镜像可以迭代在另一个镜像的顶部。位于下方的镜像称之为父镜像,最底层的镜像称之为基础镜像。最后,当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器。下图为镜像存储格式。Docker的这种机制我们称之为写时复制。
容器的本身就是一个进程,就是将软件打包成标准化单元,以用于开发、交付和部署。如果需要通俗的描述容器的话,我觉得容器就是一个存放东西的地方,就像书包可以装各种文具、衣柜可以放各种衣服、鞋架可以放各种鞋子一样。我们现在所说的容器存放的东西可能更偏向于应用比如网站、程序甚至是系统环境。
容器是用镜像创建的运行实例
仓库(Repository)——集中存放镜像文件的地方。镜像构建完成后,可以很容易的在当前宿主上运行,但是,
如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
一个Docker Registry中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。所以说:镜像仓库是Docker用来集中存放镜像文件的地方类似于我们之前常用的代码仓库。
最常使用的Registry公开服务是官方的Docker Hub ,这也是默认的Registry,并拥有大量的高质量的官方镜像,网址为:docker镜像仓库 ,在国内访问Docker Hub可能会比较慢国内也有一些云服务商提供类似于Docker Hub的公开服务。另外也可以搭建自己的DOcker镜像库
Docker支持以下的CentOS版本:
CentOS 7 (64-bit)
CentOS 6.5 (64-bit) 或更高的版本
目前,CentOS 仅发行版本中的内核支持 Docker。
Docker 运行在 CentOS 7 上,要求系统为64位、系统内核版本为 3.10 以上。
Docker 运行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系统为64位、系统内核版本为 2.6.32-431 或者更高版本。
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
1> 通过 uname -r
命令查看你当前的内核版本,这里我们只演示阿里云服务器。
2> 添加yum源。(如果已经安装了yum请忽略)
[root@tomatocc ~]# yum install epel-release –y
[root@tomatocc ~]#yum clean all
[root@tomatocc ~]#yum list
3> 安装并启动Docker,第一条命令执行中,提示时候,输入y即可。
[root@tomatocc ~]#yum install docker-io –y
[root@tomatocc ~]#service docker start
4> 检查docker的版本
[root@tomatocc ~]# docker version
5> 设置docker为开机自启动,到这里Docker就安装完成。
[root@tomatocc ~]# chkconfig docker on
1>启动 docker 后,使用 docker ps
命令可以查看当前正在运行的容器:
2>上面这条命令是查看当前正在运行的容器,如果需要查看所有容器,则可以通过 docker ps -a
命令查看:
在查看容器时,涉及到几个查看参数,含义分别如下:
CONTAINER ID
:CONTAINER ID是指容器的id,是一个唯一标识符,这是一个64位的十六进制整数,在不会混淆的情况下可以只采用id的前几位进行标识一个容器。
IMAGE
:IMAGE表示创建容器时使用的镜像。
COMMAND
:COMMAND表示容器最后运行的命令。
CREATED
:创建容器的时间。
STATUS
:容器的状态,这里可能显示一个容器启动时间,也能显示容器关闭时间。具体显示哪个要看容器当前的状态。
PORTS
:容器对外开放的端口。
NAMES
:容器的名字,如果不设置,会有一个默认的名字。
3>也可以是命令docker ps -l
查看最新创建的容器有哪些。
4>创建容器
创建容器有两种不同的方式,先创建,再启动,也可以在创建的时候一起启动。
当执行一个创建命令之后,docker首先会去本地路径下查找是否有相应的镜像,如果没有,就去docker hub
上搜索,如果搜索到了,则下载下来,然后利用该镜像创建一个容器并启动。容器的文件系统是在只读的镜像文件上添加一层可读写的文件层,这样可以使在不改变镜像的情况下,只记录改变的数据。
1 . 首先,创建一个名称为uat的容器。(uat是docker的name值,nginx是IMAGE值)
docker create --name=uat nginx
这样,docker就会从镜像库中帮我们在自己的uat容器中下载nginx镜像。
5>然后我们启动这个容器。
通过命令docker start +容器ID
,或者docker start +容器NAME
来启动这个容器。
然后我们验证uat容器中Nginx是否已经启动,可以从进程中看到Nginx已经启动了。
1> 首先,我们先来查看当前docker下的是否有镜像,因为是首次搭建,因此没有任何镜像。
[root@tomatocc ~]# docker images
2> 使用docker pull [OPTIONS] NAME[:TAG|@DIGEST]
,来拉取docker镜像库中为我们提供的镜像。(网址为:docker镜像仓库 ),国外镜像库比较慢,可以使用阿里云等其他镜像库。
OPTIONS说明:
-a :拉取所有 tagged 镜像
–disable-content-trust :忽略镜像的校验,默认开启
例如:
docker pull java
从Docker Hub下载java最新版镜像。
docker pull -a java
从Docker Hub下载Repository(仓库)为java的所有镜像。
docker pull ubuntu:13.10
从Docker Hub下载ubuntu版本为13.10。
这里,我们先使用 docker search java
命令查看docker提供的镜像库中是否有java镜像。我们可以看到没有Oracle官方提供镜像,那么我们将自己部署后续的环境。
欢迎关注本人个人公众号,交流更多技术信息