镜像(image)、容器(container)、仓库(repository),只有理解了这三个核心概念,才能顺利的理解 Docker 容器的整个生命周期。
核心概念
Docker 镜像
Docker 镜像类似于虚拟机镜像,可以将他理解为一个只读的模版。
通过版本管理
和增量的文件系统
,Docker 提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。
Docker 容器
Docker 容器类似于一个轻量级的沙箱,Docker 利用容器来运行和隔离应用。
镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。
Docker 仓库
Docker 仓库类似于代码仓库,是 Docker 集中存放镜像文件的场所。
最大的公开仓库是官方提供的 Docker Hub,其中存放着数量庞大的镜像供用户下载。
Docker 利用仓库管理镜像的设计理念与 Git 代码仓库的概念非常相似,实际上 Docker 设计上借鉴了 Git 的很多优秀思想。
安装 Docker 引擎
Docker 引擎是使用 Docker 容器的核心组件,可以在主流的操作系统
和云平台
上使用。
Docker 引擎分为两个版本:社区版本(Community Edition,CE)和企业版本(Enterprise Edition,EE)。社区版每个月会发布一次尝鲜(Edge)版本,每个季度(3、6、9、12 月)会行一次稳定(Stable)版本。
Ubuntu 发行版中,LTS(Long-Term-Support)意味着更稳定的功能和更长期(5 年)的升级支持,生产环境中推荐尽量使用 LTS 版本。
推荐实践环境的操作系统是 Debian 稳定版本系统,使用 Linux 4.0 以上内核。
Ubuntu 16.04 代号为 xenial,Ubuntu 18.04 代号为 bionic。
配置 Docker 服务
为了避免每次使用 Docker 命令时都需要切换到特权身份,可以将当前用户加入安装中自动创建的 docker 用户组:
1 | $ sudo usermod -aG docker USER_NAME |
Docker 服务启动时实际上是调用了 dockered 命令,启动参数选项可以写入 /etc/docker/
路径下的 daemon.json 文件中。
Docker 服务的默认配置文件为 /etc/default/docker
,可以通过修改其中的 DOCKER_OPTS 来修改服务启动的参数。
修改之后,通过 service 命令来重启 Docker 服务:
1 | $ sudo service docker restart |
在 Ubuntu 或 CentOS 系统上可以执行命令 journalctl -u docker.service 查看 Docker 服务的日志信息。
每次重启 Docker 服务后,可以通过 docker info 命令查看 Docker 信息,确保服务已经正常运行。