Docker 是一种容器技术,可以将应用和环境等进行打包,形成一个独立的、类似于 iOS 的 App 形式的“应用”。这个应用可以直接被分发到任意一个支持 Docker 的环境中,通过简单的命令即可启动运行。Docker 是一种最流行的容器化实现方案,和虚拟化技术类似,它极大地方便了应用服务的部署;又与虚拟化技术不同,它以一种更轻量的方式实现了应用服务的打包。使用 Docker,可以让每个应用彼此相互隔离,在同一台机器上同时运行多个应用,不过它们彼此之间共享同一个操作系统。Docker 的优势在于,它可以在更细的粒度上进行资源管理,也比虚拟化技术更加节约资源。
对于爬虫来说,如果我们需要大规模部署爬虫系统的话,用 Docker 会大大提高效率。工欲善其事,必先利其器。
本节中,我们就来介绍三大平台下 Docker 的安装方式。
1. 相关链接
- 官方网站: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
- 推荐图书:https://yeasy.gitbooks.io/docker_practice
2. Windows 下的安装
如果你的系统是 Windows 10 64 位,那么推荐使用 Docker for Windows。此时直接从 Docker 官方网站下载最新的 Docker for Windows 安装包即可:https://docs.docker.com/docker-for-windows/install/。
如果不是 Windows 10 64 位系统,则可以下载 Docker Toolbox:https://docs.docker.com/toolbox/toolbox_install_windows/。
下载后直接双击安装即可,详细过程可以参考文档说明。安装完成后,进入命令行。
运行docker命令测试:
1 |
docker |
运行结果如图 1-81 所示,这就证明 Docker 安装成功了。
图 1-81 运行结果
3. Linux 下的安装
详细的分步骤安装说明可以参见官方文档:https://docs.docker.com/engine/installation/linux/ubuntu/。
官方文档中详细说明了不同 Linux 系统的安装方法,根据文档一步步执行即可安装成功。但是为了使安装更加方便,Docker 官方还提供了一键安装脚本。使用它,会使安装更加便捷,不用再去一步步执行命令安装了。
首先是 Docker 官方提供的安装脚本。相比其他脚本,官方提供的一定更靠谱,安装命令如下:
1 |
curl -sSL https://get.docker.com/ | sh |
只要执行如上一条命令,等待一会儿 Docker 便会安装完成,这非常方便。
但是使用官方脚本安装有一个缺点,那就是慢,也可能下载超时,所以为了加快下载速度,我们可以使用国内的镜像来安装,所以这里还有阿里云和 DaoCloud 的安装脚本。
阿里云的安装脚本:
1 |
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh - |
DaoCloud 的安装脚本:
1 |
curl -sSL https://get.daocloud.io/docker | sh |
这两个脚本可以任选其一,速度都非常不错。
等待脚本执行完毕之后,就可以使用 Docker 相关命令了,如运行测试 Hello World 镜像:
1 |
docker run hello-world |
运行结果:
1 |
Unable to find image 'hello-world:latest' locally |
如果出现类似上面提示的内容,则证明 Docker 可以正常使用了。
4. Mac 下的安装
Mac 平台同样有两种选择:Docker for Mac 和 Docker Toolbox。
Docker for Mac 要求系统为 OS X EI Captain 10.11 或更新,至少 4GB 内存。如果你的系统满足此要求,则强烈建议安装 Docker for Mac。
这里可以使用 Homebrew 安装,安装命令如下:
1 |
brew cask install docker |
另外,也可以手动下载安装包(下载地址为:https://download.docker.com/mac/stable/Docker.dmg)安装。
下载完成后,直接双击安装包,然后将程序拖动到应用程序中即可。
点击程序图标运行 Docker,会发现在菜单栏中出现了 Docker 的图标,如图 1-82 中的第三个小鲸鱼图标。
图 1-82 菜单栏
点击小鲸鱼图标,展开菜单之后,再点击 Start 按钮即可启动 Docker。启动成功后,便会提示 Docker is running,如图 1-83 所示。
图 1-83 运行页面
随后,我们就可以在命令行下使用 Docker 命令了。
可以使用如下命令测试运行:
1 |
sudo docker run hello-world |
运行结果如图 1-84 所示,这就证明 Docker 已经成功安装了。
图 1-84 运行结果
如果系统不满足要求,可以下载 Docker Toolbox,其安装说明为:https://docs.docker.com/toolbox/overview/。
关于 Docker for Mac 和 Docker Toolbox 的区别,可以参见:https://docs.docker.com/docker-for-mac/docker-toolbox/。
5. 镜像加速
安装好 Docker 之后,在运行测试命令时,我们会发现它首先会下载一个 Hello World 的镜像,然后将其运行。但是这里的下载速度有时候会非常慢,这是因为它默认还是从国外的 Docker Hub 下载的。因此,为了提高镜像的下载速度,我们还可以使用国内镜像来加速下载,于是就有了 Docker 加速器一说。
推荐的 Docker 加速器有 DaoCloud(详见https://www.daocloud.io/mirror)和阿里云(详见https://cr.console.aliyun.com/#/accelerator)。
不同平台的镜像加速方法配置可以参考 DaoCloud 的官方文档:http://guide.daocloud.io/dcs/daocloud-9153151.html。
配置完成之后,可以发现镜像的下载速度会快非常多。




图 1-80 运行页面
图 1-76 下载页面
图 1-77 下载页面
图 1-78 下载列表
图 1-79 验证安装
图 1-74 控制台
图 1-75 管理页面
图 1-71 下载页面
图 1-72 运行页面
图 1-73 Android SDK 设置页面
图 1-59 下载页面
图 1-60 证书文件
图 1-61 证书导入向导
图 1-62 密码设置提示
图 1-63 选择证书存储区域
图 1-64 安全警告
图 1-65 证书配置
图 1-66 证书安装页面
图 1-67 安装警告页面
图 1-68 安装成功页面
图 1-69 证书信任设置
图 1-70 证书安装页面
图 1-43 Charles 下载页面
图 1-44 证书安装页面入口
图 1-45 证书安装页面
图 1-46 证书导入向导
图 1-47 选择证书存储区域
图 1-48 证书配置
图 1-49 代理设置
图 1-50 代理设置
图 1-51 提示窗口
图 1-52 证书安装页面入口
图 1-53 提示窗口
图 1-54 证书安装页面
图 1-55 安装成功页面
图 1-56 证书信任设置
图 1-57 代理设置
图 1-58 证书安装页面
图 1-42 运行结果
图 1-41 运行结果
图 1-39 下载页面
图 1-40 系统服务页面
图 1-29 MongoDB 官网
图 1-30 指定安装路径
图 1-31 新建 data 目录
图 1-32 新建 db 目录
图 1-33 运行结果
图 1-34 以管理员身份运行
图 1-35 新建 mongodb.log 文件
图 1-36 运行结果
图 1-37 系统服务页面
图 1-38 命令行模式
图 1-27 设置密码页面
图 1-28 系统服务页面
图 1-23 验证码
图 1-24 下载页面
图 1-25 安装页面
图 1-26 测试样例
图 1-18 GeckoDriver 下载页面






接下来按照大才的文章,pip install gerapy 即可,这一步没有遇到什么问题。有问题的同学可以向大才提 issue。
然后到命令窗口对 8000 和 6800 端口放行即可。 接着执行
里面的各个的含义见大才的文章。
后来找了一下原因发现 scrapyd 默认打开的也是 127.0.0.1
所以这个时候就要改一下配置,具体可以参考

可以看到输出的结果了。
如图所示为 Bi-LSTM 的基本原理,输入层的数据会经过向前和向后两个方向推算,最后输出的隐含状态再进行 concat,再作为下一层的输入,原理其实和 LSTM 是类似的,就是多了双向计算和 concat 过程。