文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

docker虚拟化之订制python环境

2023-01-31 06:19

关注

前面我们讲了python爬虫用到的工具及模块:phantomjs、beautifulsoup4、selenium、lxml等,如果我们想随时随地用到这个已经搭建好的python环境,这就有两个方案:一是利用vagrant打包python环境的box;二是创建一个python环境的docker镜像。

在此我们介绍下第二种方案,我们利用dockerfile直接创建docker镜像即可,当然前提是你能运行docker环境。

我们使用的是ubuntu16.04
1.安装docker

wget -qO- https://get.docker.com/ | sh

2.创建目录并创建python需要安装的模块

mkdir -p /docker/python
vim requirements.txt
beautifulsoup4
lxml
Selenium

3.创建Dockerfile文件

FROM ubuntu
MAINTAINER yanggd
RUN mkdir -p /app
WORKDIR /app
ADD requirements.txt requirements.txt
RUN apt-get update \
    #安装phantomjs依赖
    && apt-get install -y build-essential g++ flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev libx11-dev libxext-dev python wget vim\
    #安装最新版本pip
    && wget -O /tmp/get-pip.py 'https://bootstrap.pypa.io/get-pip.py' \
    && python /tmp/get-pip.py \
    && rm /tmp/get-pip.py \
    #安装python模块beautifulsoup4 selenium lxml
    && pip install -r requirements.txt \
    && wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 -O /tmp/phantomjs.tar.bz2 \
    && tar -jxvf /tmp/phantomjs.tar.bz2 -C /usr/local/ \
    && ln -s /usr/local/phantomjs-2.1.1-linux-x86_64 /usr/local/phantomjs \
    && rm /tmp/phantomjs.tar.bz2 \
    #安装python模块mysqldb
    && apt-get install -y python-dev libmysqlclient-dev \
    && pip install MySQL-python

注意:
(1)安装python mysqldb连接数据模块时,一定要安装python-dev libmysqlclient-dev,否则会出现mysql_config等错误;可以避免先安装 mysql的麻烦。
(2)dockerfile中的ADD COPY命令是添加当前目录下的文件到docker中的当前目录WORKDIR /app 下;另外若添加的是tar.gz等压缩文件时,会在docker中被认为是一个目录,而不是压缩文件,因此不可以在后续命令中用tar解压;但是wget的tar.gz会被认为是压缩文件,可以用tar解压

4.建立镜像

docker build -t ubuntu/python2.7 .

“.”表示Dockerfile所在当前目录,这样我们就创建了一个ubuntu/python2.7镜像

root@test ~/docker/python# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu/python2.7    latest              794e1613fe03        7 hours ago         741.2 MB
mysql               latest              b7dc06006192        2 weeks ago         385.6 MB
python              2.7                 4c5f5839b372        3 weeks ago         675.3 MB
ubuntu              latest              bd3d4369aebc        3 weeks ago         126.6 MB

创建完成后我们就可以在docker中编写python爬虫了:

docker run -it ubuntu/python2.7 /bin/bash

注意:
此时虽然安装了python爬虫的基础环境,但是有的工具默认是没有安装的如wget ping 等,我们在docker中安装这些工具后一定要docker commit下,否则退出docker重新登陆后,原来安装的工具就不存在了,需要重新安装,是多么蛋疼的啊。

总结:
虽然我们可以直接基于python:2.7镜像建立一个适合我们用的python环境,而且相对于ubuntu镜像建立更加轻量,但是毕竟python:2.7基础只有python,无法安装phantomjs工具及依赖,这我已经测试。
当然我们也可以通过vagrant的box来随时搭建python环境,但是这相对与docker比较重量级,见仁见智吧。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯