核心概念
1. Docker 镜像
Docker
镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
镜像是创建 Docker
容器的基础 。
通过版本管理和增量的文件系统,Docker
提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。
2. Docker 容器
Docker
容器类似于一个轻量级的沙箱,Docker
利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例。它可以启动、开始、停止 、 删除,而这些容器都是彼此相互隔离、互不可见的。
3. Docker 仓库
Docker
仓库类似于代码仓库,是 Docker
集中存放镜像文件的场所。
根据所存储的镜像公开分享与否, Docker 仓库可以分为公开仓库( Public )和私有仓库( Private)两种形式 。
当用户创建了自己的镜像之后就可以使用 push 命令将它上传到指定的公有或者私有仓库。 这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上 pull 下来就可以了。
安装Docker引擎
目前 Docker 支持 Docker 引 擎、 Docker Hub 、 Docker Cloud 等多种服务 。
- Docker 引擎:包括支持在桌面系统或云平台安装 Docker,以及为企业提供简单安全弹性的容器集群编排和管理;
- Docker Hub :官方提供的云托管服务,可以提供公有或私有的镜像仓库;
- DockerCloud :官方提供的容器云服务,可以完成容器的部署与管理,可以完整地支持容器化项目,还有CI、CD功能 。
CentOS 环境下安装 Docker
首先,为了方便添加软件源,以及支持 devicemapper 存储类型,安装如下软件包:
sudo yum update
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker 稳定版本的 yum 软件源:
之后更新 yum 软件源缓存,并安装 Docker:
sudo yum update
sudo yum install -y docker-ce
最后,确认 Docker 服务启动正常 :
sudo systernctl start docker
配置 Docker 服务
为了避免每次使用 Docker 命令时都需要切换到特权身份,可以将当前用户加入安装中
- 自动创建的 docker 用户组,代码如下:
sudo usermod -aG docker USER NAME
- 用户更新组信息,退出并重新登录后即可生效 。
Docker 服务启动时实际上是调用了 dockerd 命令,支持多种启动参数 。 因此,用户可以直接通过执行 dockerd 命令来启动 Docker 服务,如下面的命令启动 Docker 服务,开启Debug 模式,并监听在本地的 2376 端口:
这些选项可以写入/etc/docker/路径下的 daemon.json 文件中,由 dockerd 服务启动时读取:
{
"debug": true,
"hosts":[" tcp://127.0.0 . 1:2376 ”]
}
当然,操作系统也对 Docker 服务进行了封装,以使用 Upstart 来管理启动服务的Ubuntu 系统为例, Docker 服务的默认配置文件为 Ietc/default/docker
,可以通过修改其中的DOCKER OPTS
来修改服务启动的参数,例如让 Docker 服务开启网络 2375 端口的监昕:
修改之后,通过 service 命令来重启 Docker 服务:
sudo service docker restart
对于 CentOS 、 RedHat 等系统,服务通过 systemd 来管理,配置文件路径为 /etc/systemd/system/docker.service.d/docker.conf。 更新配置后需要通过 systemctl 命令来管理 Docker服务:
sudo systemctl daemon-reload
sudo systemctl start docker.service
此外,如果服务工作不正常,可以通过查看 Docker 服务的日志信息来确定问题,例如在 RedHat 系统上日志文件可能为 /var/log/messages
,在 Ubuntu 或 CentOS 系统上可以执行命令 journalctl -u docker.service
。
每次重启 Docker 服务后,可以通过查看 Docker 信息( docker info 命令),确保服务已经正常运行。