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文件,這個文件中包含如何創建鏡像的指令。
- 首先新建一個目錄和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 命來來修改鏡像的標籤。