scrapy的docker部署

Docker环境部署

Docker安装: 我使用的是企鹅的云服务器,ubuntu 32位 
网上有根多安装教程,我找了个最简单的 
sudo apt-get install -y docker.io

如果安装成功: docker info 后会出现docker版本信息

但是不出所料,肯定没那么顺利 
Cannot connect to the Docker daemon.

网上查询一番。原来是sudo的原因

使用sudo docker info就不存在这个问题,但每个docker命令都要加sudo似乎太麻烦 
按照下列步骤就可以完美解决 
1.创建docker组:sudo groupadd docker 
2.将当前用户加入docker组:sudo gpasswd -a ${USER} docker 
3.重启服务:sudo service docker restart 
4.刷新Docker成员:newgrp - docker

然后我想下载一个Anaconda的镜像 
docker search anaconda 
anaconda images
因为用的的python3,所以选择了continuumio/anaconda3 ,下下来总共有2个G.. 
docker images

然后我想进入该镜像,docker run continuumio/anaconda3 
错误!! 
panic: standard_init_linux.go:178: exec user process caused “exec format error” 
panic: standard_init_linux.go:178: exec user process caused “exec format error”

然后老夫从中文查到英文。。。原来是他鸟的docker不支持32位ubuntu…”exec format error”当时就有点怀疑是不是系统的问题=,=,唉,还是太年轻

然后重装系统,重复上面的操作!Bingo!

Docker 应用部署

因为continuumio/anaconda3太大了,所以选择现在官方的python3.5镜像,然后惊奇的发现里面竟然包含了pip,json等常用库。

docker run -t -i python:3.5 /bin/bash
 
 
  • 1

进入交互界面,然后通过pip完成scrapy的安装,完成scrapy安装后,将电脑上的scrapy工程scp到云主机上

scp -r file name@ip:/home/ubuntu/docker/scrapy

docker run -ti -v $PWD/docker/scrapy/cnki:/usr/src/myapp -w /usr/src/myapp python:3.5 /bin/sh  
 
 
  • 1
  • 2
  • 3

然后在容器中运行爬虫

scrapy crawl cnki1
 
 
  • 1

但是,提示的是没有scrapy命令..这个咋回事,进入python后,import scrapy也不存在。 
后来仔细想了下,当你停止一个Docker容器,对初始状态(创建容器所用的镜像的状态)做的所有变化都会丢失。因此当我退出时,刚刚pip下来的scrapy已经丢失了,回到了初始状态。

所以我又重复了一遍scrapy的安装,后来知道通过docker ps -al可以找到之前运行的容器然后直接commit为新的镜像。

docker ps   #获取当前容器id

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
6a1971dc899c        python:3.5          "/bin/bash"         About a minute ago   Up About a minute                       cranky_euler
2a7240457ee0        python:3.5          "/bin/bash"         About an hour ago    Up About an hour 

docker commit 2a7240457ee0 scrapy #将该镜像保存
docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
scrapy              latest              7f53ab80aa28        6 seconds ago       766.2 MB
python              3.5                 538287ecca03        13 hours ago        689.1 MB
ubuntu              latest              f7b3f317ec73        2 weeks ago         117.3 MB

docker run -ti -v /home/ubuntu/docker/scrapy/cnki:/usr/src/myapp -w /usr/src/myapp scrapy /bin/sh

scrapy crawl spider1

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

命令说明:

-v /home/ubuntu/docker/scrapy/cnkimyapp:/usr/src/myapp :将主机中目录下的myapp挂载到容器的/usr/src/myapp

-w /usr/src/myapp :指定容器的/usr/src/myapp目录为工作目录

成功爬取数据

Docker容器链接

由于在服务器端部署的docker,所以希望能够远程直接使用,因此考虑使用ssh远程连接docker。 
首先交互模式进入容器,安装ssh并启动

sudo apt-get install openssh-server
/etc/init.d/ssh start 
vim /etc/ssh/sshd_config //添加5001端口,修改完了记得docker commit 一下
Port 5001

docker run -d -p 5001:22 scrapy/cnki /etc/init.d/ssh start
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

期间也出了很多问题…但是由于时间比较久了,都没咋记录,不过都通过百度谷歌等方法找到了解决方案。

ssh root@ip -p 5001
 
 
  • 1

因为容器是root用户所以这里是root,然后就可以直接进入容器操作了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值