docker布置一个爬虫容器

1.准备一个python爬虫脚本

        在pycharm上先编写好,简单的爬虫。

        将文本粘贴到centos虚拟机

        

        

2.先查看底层镜像centos已有的命令和环境

        2.1修改yum.repo的配置文件

        

        可发现centos:latest版本是没有python环境,且各种命令不齐全,尤其yum命令需要修改其/etc/yum.repo.d下的配置文件,才能正常下载安装python3的各种依赖环境:

cd /etc/yum.repos.d
vi CentOS-Linux-BaseOS.repo
vi CentOS-Linux-AppStream.repo

CentOS-Linux-BaseOS.repo的内容修改为:

[baseos]
name=CentOS Linux $releasever - BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

CentOS-Linux-AppStream.repo的内容修改为:

[appstream]
name=CentOS Linux $releasever - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=https://vault.centos.org/centos/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

        2.2 安装python3的相关安装包

        yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make 

        

         坐等慢慢下载。。。。。

        之后需要下载安装pip命令,才能下载、import各种库

安装epel扩展源:yum -y install epel-release
安装pip:yum -y install python-pip

        发现出现问题:爆出下列错误

         解决方案:

        可以通过升级 libmodulemd (dnf upgrade libmodulemd) 解决。该问题已在 libmodulemd-2.13.0-1.fc33 中修复。

        2.3将配置好的centos python环境 commit成新的镜像

docker commit -m=" 描述信息 " -a=" 作者 "   容器ID   创建的容器名 
docker commit -m="python3 already exist" -a="FKasper" 9c5a904dbf9e centos_python

 3.开始编写dockerfile

 成功构建一个新的镜像

 4.开始docker run,并注意将文件持久化保存

忘记pip包了。。。继续改写dockerfile。

 记住CMD只有最后一个生效,前面都要用RUN来执行。

 一共爬取600多张,可发现docker在结束时,也销毁了保存在容器中的储存文件。是docker run参数问题:

        下午遇到一些未记录的问题,卡了很久。试过chcon,改过selinux,将CMD改为ENTRYPOINT各种方式

        最后是参数顺序的问题:

        ******一定一定一定把镜像名字放在最后

# docker run -v 宿主机路径:容器路径 镜像NAME
docker run -v /home/kasper/dockerfile_study/car:/home/kasper_test/car test_centos4

5.最终结果

# 最终dockerfile编写如下

# 为安装了python环境的centos
FROM centos_python

# 维护者信息
MAINTAINER FKasper

# 设置一个容器中的工作目录
WORKDIR /home/kasper_test
# 在目录下创建一个py脚本
RUN touch crab_car.py
# 将虚拟机中的py文件复制到容器目录中
COPY ./crab_car.py ./crab_car.py
copy ./car ./car

# pip需要的python库
RUN pip3 install requests lxml
RUN chmod 777 crab_car.py
# 启动脚本
ENTRYPOINT python3 crab_car.py

成功爬取车牌数据,并且在容器退出后仍然保留在宿主机内。  实验成功

******遇到未解决的问题

1.将Dockfile放到根目录下,无法执行build,报出的错误未有解决方案

2.莫名报错OCI错误,未能解决

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值