Docker作为开源社区最火爆的项目,它是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”
。
传统的虚拟化技术的体系架构
可见,我们在宿主机的操作系统上,可安装多个虚拟机,而在每个虚拟机中,通过虚拟化技术,实现了一个虚拟操作系统,随后,就可以在该虚拟操作系统上,安装自己所需的应用程序了。
我们知道,启动虚拟机就像启动一台计算机,初始化过程是相当慢的,需要等很久,才能看到登录界面。一旦虚拟机启动以后,就可以与宿主机建立网络连接,确保虚拟机与宿主机之间是互联互通的。不同的虚拟机之间却是相互隔离的,也就是说,彼此并不知道对方的存在,但每个虚拟机占用的都是宿主机的硬件与网络资源。
可见,在宿主机的操作系统上,有一个 Docker 服务在运行(或者称为“Docker 引擎”),在此服务上,我们可开启多个 Docker 容器,而每个 Docker 容器中可运行自己所需的应用程序,Docker 容器之间也是相互隔离的,同样地,都是占用的宿主机的硬件与网络资源。
Docker 容器相对于虚拟机而言,除了在技术实现上完全不一样以外,启动速度较虚拟机而言有本质的飞跃,启动一个容器只在眨眼瞬间。不管是虚拟机还是 Docker 容器,它们都是为了隔离应用程序的运行环境,节省我们的硬件资源,为我们开发人员提供福利。
现在需要能方便地创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间、地点可获取这些资源,这正是Docker所能提供的。
Docker的容器技术可以在一条主句上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大地提高了工作效率。
比如:服务器从腾讯云迁移到阿里云,如果采用了Docker容器技术,迁移只需要在新的服务器上启动需要的容器即可。
1)Image(镜像)
镜像是创建docker容器的基础,docker镜像类似于虚拟机镜像,可以将它理解为一个面向docker引擎的只读模块,包含文件系统。镜像可以用来创建Docker容器,一个镜像可以创建多个容器
。
Docker提供了简单的机制来创建和更新现有的进行,用户也可以从网上下载已经做好的应用进行来直接使用。
2)Container(容器)
容器是从镜像创建的应用运行实例,容器之间是相互隔离、互不可见的。可以把容器看做一个简易版的linux系统环境
(包括root权限、进程空间、用户空间和网络空间等),以及运行在这个环境上的应用打包而成的应用盒子。它可以被启动、开始、停止、删除,每个容器都是相互隔离的、保证安全的平台
。
3)Repository(仓库)
Docker仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用命令将它上传到公有仓库或私有仓库,这样一来当下次要在另外一条机器上使用这个镜像是,只需从仓库拉取下来即可!
仓库注册服务器是存放仓库的地方,其中包含了多个仓库,每个仓库集中存放某一类镜像,并且使用不同的标签来区分它们。目前最大的公有仓库Docker Hub,存放了数量庞大的镜像提供用户下载使用。
总结:
**Docker本身是一个容器运行载体或称之为管理引擎,我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板,Docker根据image文件生成的示例,同一个image文件可以生成多个同时运行的容器实例。**
**image文件生成的容器实例,本身也是一个文件。称之为镜像文件**
****一个容器运行一种服务。当我们需要的时候,就可以通过docker客户端建立一个对应的运行实例。也i就是我们的容器**
**至于仓库。就是放了一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候从仓库中拉下来就可以了**
1.检查内核版本,返回的值大于3.10即可。
[root@zjz ~]# uname -r
[root@zjz ~]# yum remove docker \
> docker-client \
> docker-client-latest \
> docker-common \
> docker-latest \
> docker-latest-logrotate \
> docker-logrotate \
> docker-engine
[root@zjz ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@zjz ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
//查看docker-ce可用版本
yum list docker-ce.x86_64 --showduplicates | sort -r
//这里我们下载指定版本18.9.0,注意并没有采取阿里云官方推荐的方法, 我们分别下载了docker-ce,docker-ce-cli和containerd.io这3个组件。
yum -y install docker-ce-18.09.0-3.el7 docker-ce-cli-18.09.0-3.el7 containerd.io-1.2.10-el7
5.安装最新版本docker
[root@zjz ~]# yum -y install docker-ce docker-ce-cli containerd.io
[root@zjz ~]# systemctl start docker
[root@zjz ~]# systemctl enable docker
[root@zjz ~]# docker version
不过一般不需要那么多信息,所以一直用的是docker -v
命令
————————————————————————————————————————————————————————————————————————————————安装完成了,也已经简单的测试过了———————————————————————————————————————————————————————————————
阿里云镜像获取地址:https://cr.console.aliyun.com/cnhangzhou/instances/mirrors,
登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
一.帮助命令
docker version
显示 Docker 版本信息。
docker info
显示 Docker 系统信息,包括镜像和容器数。
docker --help
docker 命令帮助
Commands:
attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像
build Build an image from a Dockerfile # 通过 Dockerfile 定制镜像
commit Create a new image from a container's changes # 提交当前容器为新的镜像
cp Copy files/folders from the containers filesystem to the host path
# 从容器中拷贝指定文件或者目录到宿主机中
create Create a new container # 创建一个新的容器,同 run,但不启动容器
diff Inspect changes on a container's filesystem # 查看 docker 容器变化
events Get real time events from the server # 从 docker 服务获取容器实时事件
exec Run a command in an existing container # 在已存在的容器上运行命令
export Stream the contents of a container as a tar archive
# 导出容器的内容流作为一个 tar 归档文件[对应 import ]
history Show the history of an image # 展示一个镜像形成历史
images List images # 列出系统当前镜像
import Create a new filesystem image from the contents of a tarball
# 从tar包中的内容创建一个新的文件系统映像[对应 export]
info Display system-wide information # 显示系统相关信息
inspect Return low-level information on a container # 查看容器详细信息
kill Kill a running container # kill 指定