ubuntu安裝Docker並部署selenium-grid

1、docker安裝

Ubuntu

1.檢查內核版本大於3.10

unama -a

2.更新apt源

sudo apt-get update

3.安裝docker

sudo apt-get install -y docker.io

4.(建議)更新成國內源

爲了永久性保留更改,您能夠修改 /etc/docker/daemon.json 文件並添加上 registry-mirrors 鍵值。node

{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}

修改保存後重啓 Docker 以使配置生效。python

5.啓動、重啓docker

sudo service docker start
sudo service docker restart

(可選)檢查docker運行狀況

sudo docker version

這裏我發現,許多操做都須要sudo,才能正常完成git

(可選)運行系統引導時啓用 docker,

systemctl enable docker

CentOS7

注意了,必須是CentOS7及以上,否則無法裝docker-ce版,其他的網上不少教程,略github

2、配置selenium容器

官方githubweb

1.從dockerhub搜索image

sudo docker search selenium

2.選擇合適的image

1>下載主hub鏡像(用於管理的)chrome

sudo docker pull selenium/hub

2>下載主node chrome鏡像(實際幹活的)docker

sudo docker pull selenium/node-chrome

3.啓動docker image

1>啓動selenium/hubjson

sudo docker run -d -P --name selenium-hub selenium/hub
  • -d 表示容器以守護態(Daemonized)形式運行
  • -P 表示 Docker 會隨機映射一個 49000~49900 的端口到內部容器開放的網絡端口
  • --name 取個容器名NAMES

2>啓動selenium/node-chromeubuntu

sudo docker run -d --link selenium-hub:hub selenium/node-chrome
  • --link 表示關聯到selenium-hub並設置別名hub

3>可選,擴大鏈接
能夠使用以下方式擴大併發

docker run -d -P -e GRID_TIMEOUT=1800 -e GRID_MAX_SESSION=5 --name selenium-hub selenium/hub
  • -e GRID_TIMEOUT=1800 限制鏈接時間(s爲單位,30分鐘後,無論怎樣都會斷開鏈接)
  • -e GRID_MAX_SESSION=5 擴大會話數(上面默認是1)
docker run -d -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 --link selenium-hub:hub selenium/node-chrome
  • -e NODE_MAX_INSTANCES=5
  • -e NODE_MAX_SESSION=5

4>可選,偶然去github看了項目的md,官方指定的部署命令

# 官方的
docker network create grid
docker run -d -p 4444:4444 --net grid --name selenium-hub selenium/hub
docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome

# 結合一下,擴大併發的選項
docker network create grid
docker run -d -p 4444:4444 --net grid -e GRID_MAX_SESSION=5 -e GRID_TIMEOUT=900 --name selenium-hub selenium/hub
docker run -d --net grid -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e HUB_HOST=selenium-hub -v /dev/shm:/dev/shm selenium/node-chrome

(可選)使用docker-compose部署

真的是簡便多了!docker-compose 輕鬆部署多容器

4.驗證成功

1>查看運行狀況

sudo docker ps

以下:

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                     NAMES
3a17f7233a7b        selenium/node-chrome   "/opt/bin/entry_poin…"   7 minutes ago       Up 7 minutes                                  cranky_haibt
9b273239c034        selenium/hub           "/opt/bin/entry_poin…"   10 minutes ago      Up 10 minutes       0.0.0.0:32768->4444/tcp   selenium-hub

2>打開瀏覽器: http://192.168.81.98:32768/grid/console能夠看到部署了一臺chrome

  • 這裏根據上圖的0.0.0.0:32768可知暴露端口爲32768
  • ubuntu主機ip:192.168.81.98

5.python程序調用

程序調用測試代碼:

from selenium import webdriver


driver = None
try:
    driver = webdriver.Remote(command_executor='http://192.168.81.98:32768/wd/hub',
                              desired_capabilities={'browserName': 'chrome'})

    driver.get('https://www.baidu.com')
    driver.implicitly_wait(15)
    driver.get_screenshot_as_file("./baidu_img.png")
    print("OK")
finally:
    if driver is not None:
        driver.quit()
相關文章
相關標籤/搜索