docker運行爬蟲代碼


docker運行爬蟲代碼

系統:Ubuntu

在項目根目錄的同級目錄下新建 Dockerfile 文件,這個Dockerfile就作為打包項目的配置文件

但是在這之前我還要做一件事情:就是將 python 依賴的一些基礎環境打包成一個基礎鏡像,作為我們以后制作項目鏡像的基礎鏡像,所以就有了 Dockerfile 文件。

docker 啟動與停止

啟動

systemctl start docker

查看狀態

systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor p>
     Active: active (running) since Tue 2020-07-28 07:28:45 UTC; 1 weeks 3>
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 20612 (dockerd)
      Tasks: 56
# 看到 active(running)什么已經啟動

停止

systemctl stop docker

鏡像制作 Dockerfile

在主目錄下新建 Dockerfile 文件

FROM python:3.7

MAINTAINER Coolin

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

CMD python task.py

選項

  • From: 指定使用哪個鏡像源

  • MAINTAINER: 設置作者名與聯系郵箱

  • ADD: 是將本地的代碼放置到虛擬容器中。它有兩個參數:第一個參數是.,代表本地當前路徑;第二個參數是/code,代表虛擬容器中的路徑,也就是將本地項目所有內容放置到虛擬容器的/code目錄下,以便於在虛擬容器中運行代碼

  • WORKDIR: 是指定工作目錄,這里將剛才添加的代碼路徑設成工作路徑。這個路徑下的目錄結構和當前本地目錄結構是相同的,所以我們可以直接執行庫安裝命令、爬蟲運行命令等。

  • RUN: 指令告訴docker 在鏡像內執行命令,安裝了什么

  • CMD: 是容器啟動命令。在容器運行時,此命令會被執行。在這里我們直接用scrapy crawl test來啟動爬蟲

requirement.txt 是用來記錄 python 項目所有依賴的包的 https://www.cnblogs.com/kai-/p/13454445.html


build 鏡像

構建

docker build  -t ImageName:TagName dir

選項

  • -t − 給鏡像加一個Tag
  • ImageName − 給鏡像起的名稱
  • TagName − 給鏡像的Tag名#版本
  • Dir − Dockerfile所在目錄

也可以在 Dockerfile 目錄內進行構造,將代碼也和 Dockerfile 放在一起

sudo docker build -t my_spider:v1 .
centos7.6: docker build -t jg_crawl2 -f /root/JinGuoCrawl/DOCKERFILE .

檢查是否構建成功

sudo docker images

運行測試

sudo docker run 鏡像名
鏡像啟動成功之后會生成一個容器,直接把容器start起來就好了,停止stop
sudo docker start 容器ID

方式2:新建並啟動容器

docker run -p 9090:9090 --name spider -d spider:v1
  • -d選項:表示后台運行
  • –name選項:容器名稱
  • -p選項:指定端口映射,格式為:hostPort:containerPort
  • 最后一個是鏡像名稱

鏡像操作

按鏡像 id 刪除鏡像,加 -f 強制刪除

sudo docker rmi 鏡像id

搜索鏡像命令:docker search 鏡像名稱

docker search 鏡像名稱

拉取鏡像就是從中央倉庫中下載鏡像到本地

docker pull 鏡像名稱

刪除所有鏡像

docker rmi docker images -q

容器操作

查看正在運行的容器

docker ps

查看所有容器(包括運行的和未運行的)

docker ps –a

查看最后一次運行的容器

docker ps –l

進入容器內部操作:

sudo docker exec -it 容器名稱(或者容器ID)  /bin/bash

-i:表示運行容器

-t:表示容器啟動后會進入其命令行。加入這兩個參數后,容器創建就能登錄進去。即分配一個偽終端。

--name :為創建的容器命名(容器名稱不能重復)。

-v:表示目錄映射關系(前者是宿主機目錄,后者是映射到宿主機上的目錄),可以使用多個-v做多個目錄或文件映射。注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。

-d:在run后面加上-d參數,則會創建一個守護式容器在后台運行(這樣創建容器后不會自動登錄容器,如果只加-i -t兩個參數,創建后就會自動進去容器)。

-p:表示端口映射,前者是宿主機端口,后者是容器內的映射端口。可以使用多個-p做多個端口映射

查看停止的容器

docker ps -f status=exited

進入容器

docker exec -it 容器id /bin/bash


編輯 docker 容器中的文件

一般docker中沒有VI或者其它相應的文本編輯器,為了寫個東西安裝個vi就可以解決問題,除此之外還有別的辦法

1、登陸 docker 中找到需要編輯的文件的位置

sudo docker ps -a
sudo docker exec -it xxx /bin/bash

2、通過docker cp把這個文件拷貝出來

sudo docker cp 容器id:/etc/mysql/my.cnf /home/tom/

3、再拷貝回去

sudo docker cp  /home/tom/my.cnf  容器id:/etc/mysql/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM