一、Docker概述
1.1、Docker简介
是一种轻量级的“虚拟机”
在Linux容器里运行应用的开源工具
1.Docker是Docker.Lnc公司开源的一个基于LXC技术之上搭建的Container容器引擎,源代码托管在Github上,基于Go语言并遵从Apache2.0协议开源。
2.Docker属于Linux容器的一种封装,提供简单易用的容器使用接口。
3.Docker将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了Docker,就不用担心环境问题。
4.总体来说,Docker的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。
2.Docker与虚拟机的区别
容器 | 虚拟机 | |
---|---|---|
启动时间 | 毫秒 | 分钟 |
占用资源 | 少 | 多 |
安全 | 共享内核,不安全 | 模拟硬实现逻辑隔离,安全 |
是否需要系统 | 否 | 是 |
1.3、Docker的优势
- 灵活:即使是复杂的应用程序也可封装。
- 轻量级:容器利用并共享主机内核。
- 便携式:您可以在本地构建,部署到云上并在任何地方运行。
- 可扩展性:您可以增加和自动分发容器副本。
- 可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。
1.4 (image(镜像) repository(仓库) container(容器)
image(镜像)
1.docker镜像就是一堆只读层的统一视角(统一文件系统技术能够将不同的层整合成为一个文件系统,为这些层提供一个统一的视角,在用户看来,只存在一个文件系统)例如:一个镜像可以包含一个完整的操作系统环境,里面仅仅安装了Apache或用户需要的其他应用程序
2.镜像可以用来创建docker容器,一个镜像可以创建很多容器
3.docker提供了一个很简单的机制来创建镜像或者更新已有的镜像,用户也可以直接从其他人哪里下载一个已经做好的镜像来直接使用
repository(仓库)
1.仓库是集中存放镜像文件的场所。
2.有时候会把仓库和仓库注册服务器当作同一含义。实际上仓库注册服务器存放着很多仓库,每个仓库之间又包含了多个镜像,每个镜像又有不同的标签(tag)
3.仓库分为公开仓库(public)和私有仓库(private)两种形式。最大的公开仓库的Docker
Hub,存放了数量庞大的镜像,提供用户下载。国内的公开仓库包括时速云、网易云等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库
4.当用户创建了自己的镜像之后就可以使用push命令将镜像上传到公有或者私有仓库中,这样下次可以在另外一台机器上使用这个镜像时候,只需要从仓库上pull下来就可以了
Docker仓库概念和Git类似,注册服务器可以理解为GItHub这样的托管服务
container(容器)
1.Docker利用容器(container)来运行应用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序
2.容器的定义和镜像几乎一样,也是一堆层的统一视角,唯一的区别在于容器的最上面那一层是可读写的
3.一个运行当中的容器被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程而正是文件系统隔离技术使得docker成为了一个非常有潜力的虚拟化技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层
2.部署docker
2.1安装依赖包
[root@server1 ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
##设置仓库,需要安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
##lvm2逻辑券管理工具
它是对磁盘分区进行管理的一种机制,建立在硬盘和分区之上的一个逻辑层,用来提高磁盘管理的灵活性。通过LVM可将若干个磁盘分区连接为一个整块的卷组(Volume Group),形成一个存储池。可以在卷组上随意创建逻辑卷(Logical Volumes),并进一步在逻辑卷上创建文件系统,与直接使用物理存储在管理上相比,提供了更好灵活性。
##device-mapper
Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
[root@server1 ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/d