win10安裝docker(配置國內鏡像加速)並實現scrapy通過splash爬取動態網頁

1、Docker溯源

Docker的前身是名爲dotCloud的小公司,主要提供的是基於 PaaS(Platform as a Service,平臺及服務)平臺爲開發者或開發商提供技術服務,並提供的開發工具和技術框架。因爲其爲初創的公司,又生於IT行業,dotCloud受到了IBM,亞馬遜,google等公司的擠壓,發展舉步維艱。於是,在2013年dotCloud 的創始人,年僅28歲的Solomon Hykes做了一個艱難的決定:將dotCloud的核心引擎開源!然而一旦這個基於 LXC(Linux Container)技術的核心管理引擎開源,dotCloud公司就相當於走上了一條"不歸路"。可正是這個孤注一擲的舉動,卻帶來了全球技術人員的熱潮,衆程序員驚呼:太方便了,太方便了。也正是這個決定,讓所有的IT巨頭也爲之一顫。一個新的公司也隨之出世,它就是:Docker。可以說,Docker是一夜成名的!!

2、認識docker

2.1 鏡像、容器、倉庫

首先,需要了解一下幾個概念:

鏡像(image):Docker 鏡像就是一個只讀的模板,鏡像可以用來創建 Docker 容器。Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡像,用戶甚至可以直接從其他人那裏下載一個已經做好的鏡像來直接使用。鏡像是一種文件結構。Dockerfile中的每條命令都會在文件系統中創建一個新的層次結構,文件系統在這些層次上構建起來,鏡像就構建於這些聯合的文件系統之上。Docker官方網站專門有一個頁面來存儲所有可用的鏡像,網址是:index.docker.io。

容器( Container):容器是從鏡像創建的運行實例。它可以被啓動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。可以把容器看做是一個簡易版的 Linux 環境,Docker 利用容器來運行應用。

倉庫:倉庫是集中存放鏡像文件的場所,倉庫註冊服務器(Registry)上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標籤(tag)。目前,最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。

2.2 docker定義

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上。Docker是一個重新定義了程序開發測試、交付和部署過程的開放平臺,Docker則可以稱爲構建一次,到處運行,這就是Docker提出的"Build once,Run anywhere"

Docker倉庫用來保存我們的images,當我們創建了自己的image之後我們就可以使用push命令將它上傳到公有或者私有倉庫,這樣下次要在另外一臺機器上使用這個image時候,只需要從倉庫上pull下來就可以了。注意:Docker不是容器,而是管理容器的引擎!

Docker中文手冊上解釋說:Docker是一個開源的引擎,可以輕鬆的爲任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集羣和其他的基礎應用平臺。

從這裏我們可以看出,Docker並非是容器,而是管理容器的引擎。Docker是爲應用打包、部署的平臺,而非單純的虛擬化技術。

3、docker安裝

3.1 環境準備

先檢查你的機器是否支持硬件虛擬化技術(Hardware Virtualization Technology)並且已被啓用。什麼是硬件虛擬化技術

對於windows系統,可以通過兩種方式查看CPU是否支持虛擬化,具體操作步驟及方法點擊這裏

你可以在 任務管理器->性能 中查看到你的電腦是否開啓了虛擬化


3.2 下載docker

下載地址1:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/

下載地址2:https://docs.docker.com/toolbox/overview/

3.3 安裝docker

安裝沒有什麼特別注意的,安裝完成後,桌面上會增加三個圖標:

img

以管理員身份運行Docker Quickstart Terminal,就會啓動一個終端,第一次啓動的話你會看到命令行會輸出一些東西,這是docker在初始化配置,等待一下,它會配置Docker Toolbox,之後,當它完成後,你會看到啓動成功的畫面。 

這個終端是運行在bash環境下的,而不是標準的windows命令行,因爲Docker需要運行在bash環境下,否則一些命令無法運行。 

4、docker入門

4.1 查看docker版本信息

輸入docker version

4.2 運行docker run hello-world以測試從Docker Hub中拉取圖像並啓動容器 

5、docker國內源加速

在搜索鏡像或下載的時候會出現類似Error response from daemon: Get https://index.docker.io/v1/search?q=sameersbn&n=25:  dial tcp: lookup index.docker.io on 192.168.65.1:53: read udp 192.168.65.2:45190->192.168.65.1:53: i/o timeout這樣的提示,主要原因是鏡像都在國外,訪問過慢,所以我們需要換成國內的docker源加速,下面這個是免費的,速度很快,很贊!https://www.daocloud.io/mirror#accelerator-doc,具體更改步驟如下:

到剛纔的網站註冊一個賬號,然後就可以看到對應系統的鏡像加速地址了,記下地址。

然後在終端中依次打入下面四條命令(替換其中的加速地址)將上面網頁的鏈接地址添加到如下標紅字段即可。 

1. docker-machine ssh default
2. sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror="http://xxxx.m.daocloud.io" |g" /var/lib/boot2docker/profile
3. exit
4. docker-machine restart default

6、安裝Splash渲染引擎

執行:docker pull scrapinghub/splash 

7、scrapy通過splash爬取動態網頁

本機環境:win10 + pyCharm

a. 在爬取網頁前需先在win10上安裝並啓動docker,並拉取scrapinghub/splash;

b. 然後在對應端口開啓Splash服務,命令如下:docker run -p 8050:8050 -p 8051:8051 scrapinghub/splash;Splash服務開啓後,docker終端處於listen狀態。

c. 在pyCharm下實現動態網頁爬取代碼,如下圖示(注意SPLASH_URL與docker配置信息對應):

settings.py中配置如下:

爬蟲部分代碼如下:

 

 

docker部分參考:https://blog.csdn.net/IT_xiao_bai/article/details/83070070 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章