docker虚拟化之订制python环境

发布时间:2019-09-14 09:23:04编辑:auto阅读(1715)

    前面我们讲了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比较重量级,见仁见智吧。

关键字