目录
1.docker简介
1.1什么是docker
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
1.2为什么docker
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。
更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约 了开发、测试、部署的时间。
一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一 致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行 时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这 类问题。
更轻松的维护和扩展
Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的 维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。
2.组件介绍
2.1镜像
操作系统分为内核和用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
2.2容器
镜像( Image )和容器( Container )的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删 除、暂停等。 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命 名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚 至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一 个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
2.3仓库(Docker Registry)
镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用 这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。
3.命令使用
3.1使用镜像
3.1.1获取镜像
从 Docker 镜像仓库获取镜像的命令是 docker pull 。其命令格式为:
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
具体的选项可以通过 docker pull --help 命令看到,这里说一下镜像名称的格式。 Docker 镜像仓库地址:地址的格式一般是 [:端口号] 。默认地址是 Docker Hub。
仓库名:如之前所说,这里的仓库名是两段式名称,即 / 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。
3.1.2列出镜像
要想列出已经下载下来的镜像,可以使用 docker image ls 命令。
3.1.3删除镜像
如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
$ docker image rm [选项] <镜像1> [<镜像2> ...]
其中, 可以是 镜像短 ID 、 镜像长 ID 、 镜像名 或者 镜像摘要 。
3.2操作容器
3.2.1启动和终止
启动:docker run(新建并启动)
启动已终止容器 可以利用 docker container start 命令,直接将一个已经终止的容器启动运行。
当利用docker run 来创建容器时,Docker 在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
终止:可以使用 docker container stop 来终止一个运行中的容器。
此外,当 Docker 容器中指定的应用终结时,容器也自动终止。
3.2.2导出和导入
导出容器:如果要导出本地某个容器,可以使用 docker export 命令。
导入容器快照:可以使用 docker import 从容器快照文件中再导入为镜像,也可以通过指定 URL 或者某个目录来导入。
3.3.3删除容器
可以使用 docker container rm 来删除一个处于终止状态的容器。
3.3访问仓库
docker hub
目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜 像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
注册并登录后,可以通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它 下载到本地。