1.8.3 Docker的安装使用
Docker 是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于 iOS 的 APP 形式的「应用」,这个应用可以直接被分发到任意一个支持 Docker 的环境中,通过简单的命令即可启动运行。
Docker 是一种最流行的容器化实现方案。和虚拟化技术类似,它极大的方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker 可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过他们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源的管理,也比虚拟化技术更加节约资源。
对于爬虫来说,如果我们需要大规模部署爬虫系统的话,用 Docker 会大大提高效率。
1、系统要求
Docker 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
2、安装
详细的分步骤的安装说明可以参见官方文档。
在官方文档中详细说明了不同 Linux 系统的安装方法,安装流程根据文档一步步执行即可安装成功。但是为了使得安装更加方便,Docker 官方还提供了一键安装脚本,使用它会使得安装更加便捷,不用再去一步步执行命令安装了,在此介绍一下一键脚本安装方式。
首先是 Docker 官方提供的安装脚本,相比其他脚本,官方提供的一定更靠谱,安装命令如下:
curl -sSL https://get.docker.com/ | sh
只要执行如上一条命令,等待一会儿 Docker 便会安装完成,非常方便。
当然,在 Centos7.3 操作系统之中,你还可以使用 yum 来安装 docker,命令如下:
sudo yum update && sudo yum install -y docker
安装最新版 docker-ce
首先卸载老版本 docker:
sudo yum list installed | grep docker
sudo yum remove -y docker-io.x86_64
现在,安装 yum-utils,其提供了 yum-config-manager,可以用来管理 yum 源:
sudo yum install -y yum-utils
添加 yum 源,并更新 yum 索引:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
安装启动 docker-ce,最后验证安装:
sudo yum install docker-ce
sudo systemctl start docker
sudo docker info # 进行验证
然后我们可以通过 systemd 管理 docker:
sudo systemctl start docker
sudo systemctl enable docker
sudo systemctl status docker
等待命令执行完毕之后,就可以使用 Docker 相关命令了,如运行测试 Hello World 镜像:
sudo docker run hello-world
运行结果:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
78445dd45222: Pull complete
Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
如果出现上文类似提示内容则证明 Docker 可以正常使用了。
3、相关配置
(1) 添加内核参数
默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
请添加内核配置参数以启用这些功能。
$ sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
然后重新加载 sysctl.conf 即可
$ sudo sysctl -p
(2) 建立Dcoker用户组(生产环境慎用)
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
操作顺序:
sudo cat /etc/group | grep docker
- 如果不存在docker组,可以添加
sudo groupadd docker
- 添加当前用户到docker组,
sudo gpasswd -a ${USER} docker
- 重启docker服务,
sudo systemctl restart docker
- 如果权限不够,
sudo chmod a+rw /var/run/docker.sock
当然你也可以使用原来的设置。
(3) 使用镜像加速器
国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器。Docker官方和国内很多云服务商都提供了加速器服务,例如:
- Docker 官方提供的中国registry mirror
- 阿里云加速器
- DaoCloud 加速器
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://registry.docker-cn.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
重新加载配置并且重新启动。
sudo systemctl daemon-reload
sudo systemctl restart docker
这样我们就完成的加速器的配置。
(4) 修改默认存储路径
安装Docker以后,镜像文件默认是安装在/var/lib/docker 目录下的, 这样的话我根本装不了太多的镜像,所以,在生成环境中需更改容器的默认存储目录。现在有一个1000G的硬盘挂在/data目录下,我们可以新建一个文件路径:/data/docker,在centos7中修改对应配置文件即可:
sudo vim /etc/systemd/system/multi-user.target.wants/docker.service
使用--graph参数指定存储位置,在 ExecStart=/usr/bin/dockerd 下添加 --graph /data/docker:
修改完成以后 reload 配置文件,并重启 docker 服务
sudo systemctl daemon-reload &&
sudo systemctl restart docker.service
(5) 相关链接
官方网站:https://www.docker.com
GitHub:https://github.com/docker
Docker Hub:https://hub.docker.com
官方文档:https://docs.docker.com
DaoCloud:http://www.daocloud.io
中文社区:http://www.docker.org.cn
中文教程:http://www.runoob.com/docker/docker-tutorial.html
补充:Docker Compose的安装
Compose 是 Docker 官方的开源项目,由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行 Docker 容器集群的快速编排管理。
我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求,通过子命令对项目中的一组容器进行便捷地生命周期管理。。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
(1) pip安装
请确保系统已正确安装 python 以及 pip :
pip install -U docker-compose
如果上述方式安装 docker-compose 比较慢的话,我们可以使用国内的pip源进行加速,如下:
pip install -ihttps://pypi.tuna.tsinghua.edu.cn/simple -U docker-compose
(2) curl方式安装
curl 方式就比较简单,直接使用如下命令:
curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-
uname -s-
uname -m> /usr/local/bin/docker-compose
然后设置可执行权限:
chmod +x /usr/local/bin/docker-compose
curl 方式安装 docker-compose,因为众所周知的原因很慢,所以强烈建议使用pip方式安装 docker-compose 。
(3) 验证安装
在命令行下输入:
docker-compose version
当终端输出如下如下信息,则表明安装成功:
docker-compose version 1.16.1, build 6d1ac219
docker-py version: 2.5.1
CPython version: 3.6.1
OpenSSL version: OpenSSL 1.0.2l 25 May 2017