spark環境搭建_docker_note_1

1. 安裝centos 7

2. 安裝pyspark單機版本

sudo yum update
sudo yum remove java-1.8.0-openjdk
sudo yum install java-1.8.0-openjdk

從 http://spark.apache.org/downloads.html 中download spark_2.4.5 hadoop_2.7;
複製到centos中;

tar zxvf spark-2.4.5-bin-hadoop2.7.tgz

cd spark-2.4.5-bin-hadoop2.7/
bin/pyspark

測試程序

rdd = sc.parallelize([1,2,3,4,5])
rdd.map(lambda x: x+1).reduce(lambda x,y: x+y).collect()

待更改centos默認的python2 爲python3

3. 安裝docker

sudo yum install docker
systemctl start docker.service
systemctl enable docker.service

docker

docker serach mysql  # 默認從dockerhub官網去查找,
systemctl restart docker.service
sudo service docker restart

修改docker鏡像源:

docker默認的源爲國外官方源,下載速度較慢,可改爲國內,加速

方案一:

修改或新增 /etc/docker/daemon.json

# vi /etc/docker/daemon.json

{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

systemctl restart docker.service

		Docker國內源說明:

		Docker 官方中國區: https://registry.docker-cn.com

		網易: http://hub-mirror.c.163.com

		中國科技大學: https://docker.mirrors.ustc.edu.cn

		阿里雲: https://pee6w651.mirror.aliyuncs.com

最終我用下面的方案解決了:

進入/etc/docker

查看有沒有 daemon.json。這是docker默認的配置文件。

如果沒有新建,如果有,則修改。
[root@zengmg docker]# vi daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

保存退出。


重啓docker服務

service docker restart

成功!

sudo docker --registry-mirror=https://registry.docker-cn.com daemon

3.1 檢查docker鏡像源配置

sudo docker search mysql
sudo docker pull mysql

docker pull: 拉取鏡像
docker search: 在倉庫中尋找鏡像

docker images: 查看已經獲取的鏡像
在這裏插入圖片描述

3.2 創建一個容器

我們再獲取一個centos的鏡像

 sudo docker pull centos

在這裏插入圖片描述
有幾個字段,分別是來自哪個倉庫、鏡像標記、鏡像ID、創建時間、鏡像大小。

sudo docker images

使用剛剛獲取的centos鏡像,創建一個容器,在容器中運行bash應用

sudo docker images
sudo docker run -t -i centos /bin/bash

在這裏插入圖片描述
在這裏插入圖片描述

退出容器

exit

查看運行中的容器有哪些

sudo docker ps

在這裏插入圖片描述

4. 創建鏡像

通過修改已有鏡像來創建新的鏡像

創建鏡像有很多種方法,用戶可以更新鏡像,也可以利用本地文件系統創建鏡像。
a. 修改已有鏡像,比如在已有的鏡像中添加新的組件
下載鏡像

docker pull training/sinatra

b. 啓動鏡像

sudo docker run -t -i trainning/sinatra /bin/bash

c. 在鏡像中添加json和gem兩個應用

gem install json

在這裏插入圖片描述
d. 添加完成後,使用exit退出容器,我們在容器中添加了新的應用,容器被改變。

exit

在這裏插入圖片描述
d. 我們使用docker commit 命令來提交更新後的副本。
docker commit -m ‘add json gem’ -a ‘Docker Container’ 7b789b19757d my/sinatra:v2
-m : 參數指定提交的說明,和Git中的git commit -m的參數是一樣的;
-a: 指定更新的用戶信息,後面是用來創建鏡像的容器ID,最後是創建鏡像的倉庫名和tag信息。創建成功後,命令會返回這個鏡像的ID信息。
e. 接着我們可以使用我們自己創建的鏡像來啓動容器了
docker run -t -i my/sinatra:v2 /bin/bash
我們可以看到,一個容器就是一個微型的LINUX系統

使用Dockerfile來創建鏡像

使用docker commit雖然很容易擴展鏡像,但不便於團隊分享,我們可以使用docker
build來創建一個新的鏡像,爲此首先要創建一個Dockerfile文件,這個文件中包含如何創建鏡像的指令。

  1. 首先新建一個目錄和Dockerfile

b。Dockerfile中輸入指令,每條指令都創建鏡像的一層。
Dockerfile中內容如下:

-----------------------------------------------------
#註解
FROM centos
MAINTAINER REGAN [email protected]
RUN yum -qqy install python
-----------------------------------------------------

其中 FROM 告訴Docker使用哪個鏡像作爲基礎
接着是維護者的信息
RUN開頭的指令會在創建中運行,例如安裝一些軟件包,這裏使用yum 安裝python. 注意使用yum 需要制定參數 -qqy,不然呢可能會報錯的。

然後使用docker build構建鏡像:

docker build -t='my/python:v1' .

其中 -t 標記來添加 tag,指定新的鏡像的用戶信息。
“.” 是 Dockerfile 所在的路徑(當前目錄),也可以替換爲一個具體的 Dockerfile 的路徑。

可以看到 build 進程在執行操作。它要做的第一件事情就是上傳這個 Dockerfile 內容,因爲所有的操作都要依據 Dockerfile 來進行。 然後,Dockfile 中的指令被一條一條的執行。每一步都創建了一個新的容器,在容器中執行指令並提交修改(就跟之前介紹過的 docker commit 一樣)。當所有的指令都執行完畢之後,返回了最終的鏡像 id。所有的中間步驟所產生的容器都被刪除和清理了。

需要注意的是一個鏡像是不能操作127層的,否則會報錯!
當然Dockerfile中還可以輸入其他的命來,例如可以使用ADD命令複製本地文件到鏡像中;用EXPOSE命令對外開放端口;用CMD命令描述容器啓動後運行的程序。

現在覺的鏡像的標籤不好,可以使用docker tag 命來來修改鏡像的標籤。

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