一、什么是Docker
docker简介:
docker是一个开源的应用容器引擎,基于go语言,遵从apache2.0协议开源。通过docker让开发者可以打包他们的应用以及依赖到一个可移植的镜像中,然后在其他linux或windows环境中获取镜像,并生成容器进行运行。docker logo为一个托运了很多集装箱的鲸鱼货轮。每一个集装箱类比于装在不同东西的容器。
docker所使用的容器化技术:
在容器化技术之前,在一台电脑上想实现多台电脑效果的是虚拟机,比如我们常用的VMware虚拟软件。通过VMware虚拟出多台各种操作系统的虚拟机。但是由于虚拟软件每次虚拟出虚拟机时往往需要比较大的存储以及内容空间,并且启动也比较慢,缺点比较明显,所以后来Linux发展出另一种虚拟化技术:Liunx容器(Liunx Containers,缩写LXC)。LXC指的是Liunx内核(尤指命名空间以及CGroup)的一个特性,该虚拟化技术相对VMware等虚拟软件不模拟完整的操作系统,而是对进程间进行隔离,将软件所需要的所有资源打包到一个隔离的容器中。容器中不需要操作系统内容,只需要运行软性所需的资源及配置信息。所以在基于LXC之上的Docker容器引擎相比虚拟机更加的轻便,运行也相比快速。(下图左图为虚拟化软件实现的虚拟机结构,右图为虚拟机与docker容积技术对比)
docker三个核心概念:(容器、镜像、仓库)
上面中我们讲了docker是什么,我们大概知道了docker是一个使用了虚拟化容器技术的容器引擎,那么它在我们的使用中他是做了哪些事情。举个例子:我们现在搭建了一个房子,经过了材料采集、实施安装,重重工序之后终于搭建完成可以使用了。可过了段时间,我们需要在另一个地方生活。此刻我们面临的是又得在另一块地方有的重头再来搭建房子,又得花钱出力。然后此时你突然有一个魔法,可以将自己之前的房子复制一份变成一个小魔盒可以放在背包里。到了新的生活地方后,打开魔盒又会变成一个与之前建造的房屋一样的房屋,直接可以入住。在这个例子中使用魔法将原有房屋变成魔盒过程就是docker的创建镜像过程。将镜像装入背包就是docker中的将镜像上传至镜像仓库。通过魔法将魔盒还原成新房子是docker中的使用镜像启动容器过程。在这个例子中可以看出 房子就是docker中的容器(Container),魔盒就是docker中的镜像(Image)。存放镜像的背包就是docker中的镜像仓库(Repository)。镜像仓库中存在很多不同的镜像文件,不同的镜像创建出不同的容器。
、
docker 两句口号:
1,Build, Ship and Run
- Build(构建镜像) : 镜像就像是集装箱,包含文件以及运行环境等等资源;
- Ship(运输镜像) :在宿主机和仓库间进行运输,这里仓库就像是超级码头;
- Run (运行镜像) :运行的镜像就是一个容器,容器就是运行程序的地方。
2,Build once,Run anywhere
搭建一次,随处运行。
二、下载安装
安装docker的前提条件(centos为例):
64位操作系统、CentOs 7 以上版本、已安装 gcc 环境。
下载安装命令:yum install docker
启动docker:systemctl start docker
设置开机自启:systemctl enable docker
查看docker版本:docker version
设置仓库镜像地址
类比于maven的仓库地址一样,设置国内的镜像站下载镜像比较快。
镜像站地址:
1,阿里的:https://gawoonvl2.mirror.aliyuncs.com 来源于阿里云登录后开通服务后看到的。
2,另一个:http://f1361db2.m.daocloud.io (地址来源:https://www.daocloud.io/mirror)
设置方式:
通过修改daemon配置文件/etc/docker/daemon.json文件来使用加速器(如果不存在该文件则新创建一个即可)。
{
"registry-mirrors":["http://f1361db2.m.daocloud.io"]
}
配置完成后执行如下命令并,进行重启即可生效。
systemctl daemon-reload
systemctl restart docker
三、下载第一个镜像以及启动运行
我们下载一个nginx的镜像,并启动运行测试,使用pull命令下载:docker pull nginx,不指定版本时为下载最新版本。
下载完成后使用run命令启动:docker run -d -p 80:80 nginx
第一个80表示外部客户端端口,后面80表示容器内部端口,我们访问我们的客户端ip(docker是按照在linux虚拟机机上的,所以ip为linux ip地址)直接访问测试:
文字中第一部分图片部分内容参考知乎文章:https://zhuanlan.zhihu.com/p/53260098