zoukankan      html  css  js  c++  java
  • 基于alpine用dockerfile创建的爬虫Scrapy镜像

    一、下载alpine镜像

    [root@DockerBrian ~]# docker pull alpine
    Using default tag: latest
    Trying to pull repository docker.io/library/alpine ...
    latest: Pulling from docker.io/library/alpine
    4fe2ade4980c: Pull complete
    Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528
    Status: Downloaded newer image for docker.io/alpine:latest
    [root@docker43 ~]# docker images
    REPOSITORY TAG IMAGE ID CREATED SIZE
    docker.io/alpine latest 196d12cf6ab1 3 weeks ago 4.41 MB

    二、编写Dockerfile

      创建scrapy目录存放dockerfile文件

    [root@DockerBrian ~]# mkdir /opt/alpineDockerfile/
    [root@DockerBrian ~]# cd /opt/alpineDockerfile/
    [root@DockerBrian alpineDockerfile]# mkdir scrapy  && cd scrapy && touch Dockerfile
    [root@DockerBrian alpineDockerfile]# cd scrapy/
    [root@DockerBrian scrapy]# ll
    总用量 4
    -rw-r--r-- 1 root root 1394 10月 10 11:36 Dockerfile
    

      编写dockerfile文件

    # 指定创建的基础镜像
    FROM alpine
     
    # 作者描述信息
    MAINTAINER alpine_python3_scrapy (zhujingzhi@123.com)
     
    # 替换阿里云的源
    RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories && 
        echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
     
    # 同步时间
     
    # 更新源、安装openssh 并修改配置文件和生成key 并且同步时间
    RUN apk update && 
        apk add --no-cache openssh-server tzdata && 
        cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && 
        sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && 
        ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && 
        ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && 
        ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && 
        echo "root:h056zHJLg85oW5xh7VtSa" | chpasswd
    
    
    # 安装Scrapy依赖包(必须安装的依赖包)
    RUN apk add --no-cache python3 python3-dev gcc openssl-dev openssl libressl libc-dev linux-headers libffi-dev libxml2-dev libxml2 libxslt-dev openssh-client openssh-sftp-server
    
    # 安装环境需要pip包(这里的包可以按照需求添加或者删除)
    RUN pip3 install --default-timeout=100 --no-cache-dir --upgrade pip setuptools pymysql pymongo redis scrapy-redis ipython Scrapy requests
    
    # 启动ssh脚本
    RUN echo "/usr/sbin/sshd -D" >> /etc/start.sh && 
        chmod +x /etc/start.sh
    
    # 开放22端口
    EXPOSE 22
     
    # 执行ssh启动命令
    CMD ["/bin/sh","/etc/start.sh"]
    

      实现了容器可以SSH远程访问 基于Python3 环境安装的Scrapy,通过start.sh脚本启动SSH服务

    三、创建镜像

      创建镜像

    [root@DockerBrian scrapy]# docker build -t scrapy_redis_ssh:v1 .
    

      查看镜像

    [root@DockerBrian scrapy]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    scrapy_redis_ssh    v1                  b2c95ef95fb9        4 hours ago         282 MB
    docker.io/alpine    latest              196d12cf6ab1        4 weeks ago         4.41 MB

    四、创建容器

      创建容器(名字为scrapy10086 远程端口是映射宿主机10086端口)

    docker run -itd --restart=always --name scrapy10086 -p 10086:22 scrapy_redis_ssh:v1
    

      查看容器

    [root@DockerBrian scrapy]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
    7fb9e69d79f5        b2c95ef95fb9        "/bin/sh /etc/star..."   3 hours ago         Up 3 hours          0.0.0.0:10086->22/tcp   scrapy10086
    

      登录容器

    [root@DockerBrian scrapy]# ssh root@127.0.0.1 -p 10086  
    The authenticity of host '[127.0.0.1]:10086 ([127.0.0.1]:10086)' can't be established.
    ECDSA key fingerprint is SHA256:wC46AU6SLjHyEfQWX6d6ht9MdpGKodeMOK6/cONcpxk.
    ECDSA key fingerprint is MD5:6a:b7:31:3c:63:02:ca:74:5b:d9:68:42:08:be:22:fc.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '[127.0.0.1]:10086' (ECDSA) to the list of known hosts.
    root@127.0.0.1's password:                                                                # 这里的密码就是dockerfile中定义的 echo "root:h056zHJLg85oW5xh7VtSa" | chpasswd
    Welcome to Alpine!
    
    The Alpine Wiki contains a large amount of how-to guides and general
    information about administrating Alpine systems.
    See <http://wiki.alpinelinux.org>.
    
    You can setup the system with the command: setup-alpine
    
    You may change this message by editing /etc/motd.
    
    7363738cc96a:~# 

    五、测试

      创建个scrapy项目测试

    7363738cc96a:~# scrapy startproject test
    New Scrapy project 'test', using template directory '/usr/lib/python3.6/site-packages/scrapy/templates/project', created in:
        /root/test
    
    You can start your first spider with:
        cd test
        scrapy genspider example example.com
    7363738cc96a:~# cd test/
    7363738cc96a:~/test# ls
    scrapy.cfg  test
    7363738cc96a:~/test# cd test/
    7363738cc96a:~/test/test# ls
    __init__.py     __pycache__     items.py        middlewares.py  pipelines.py    settings.py     spiders
    7363738cc96a:~/test/test# 
    

      测试成功

  • 相关阅读:
    使用批处理bat作为日期系统日期的前三天
    电脑桌面显示倒退
    BZOJ 2648/2716(SJY把件-KD_Tree)[Template:KD_Tree]
    yii使用寻呼功能
    宝付额度
    vs2010旗舰版产品密钥
    考察网贷平台是否正规,仅供参考。
    sql server 修改字段大小
    帕累托分析法
    帕累托分析法(Pareto Analysis)(柏拉图分析)
  • 原文地址:https://www.cnblogs.com/zhujingzhi/p/9766965.html
Copyright © 2011-2022 走看看