下载spark的包到和Dockerfile一个目录下
https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.7.tgz
spark-master
docker run -it --name spark-master -p 6066:6066 -p 7077:7077 -p 8081:8080 -h spark-master yye/spark:2.4.0 ./bin/spark-class org.apache.spark.deploy.master.Masterspark-worker
docker run -it --name spark-worker -P -h spark-worker --link spark-master yye/spark:2.4.0 ./bin/spark-class org.apache.spark.deploy.worker.Worker spark://spark-master:7077启动spark master
docker exec -it c6a5ff37c092 ./bin/spark-shell然后访问spark web页面
直接上命令
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test portainer/portainer访问9000端口 设置密码(要求密码8位以上)
因为网络地址需要放置在etcd上面 所以需要先安装etcd https://github.com/etcd-io/etcd/releases/download/v3.3.11/etcd-v3.3.11-linux-amd64.tar.gz
解压
tar -zxvf etcd-v3.3.11-linux-amd64.tar.gz后台启动etcd ,说明,172.16.0.73 如果是云服务器,那就设为内网ip
nohup ./etcd --name etcd1 --listen-client-urls http://192.168.37.222:2379 --advertise-client-urls http://192.168.37.222:2379 &查看是否启动成功
ps -ef | grep etcd下载flannel
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/flannel-0.7.1-4.el7.x86_64.rpm安装
rpm -ivh flannel-0.7.1-4.el7.x86_64.rpm配置flannel-config.json网段 (先创建这个配置)
{ “Network”:“10.10.0.0/16”, “SubnetLen”:24, “Backend”:{ “Type”:“vxlan” } }
将flannel-config.json写入etcd
./etcdctl --endpoints=http://172.16.0.73:2379 set /docker/network/config < flannel-config.json创建配置(其中-etcd-prefix是存储网段信息的目录前缀,-iface是物理机的网卡,-etcd-endpionts是etcd的客户端访问地址)
nohup flanneld -etcd-endpoints=http://172.16.0.73:2379 --etcd-prefix=/docker/network -iface eth0 &查看flannel的日志,就在你运行命令的当前目录下,有个nohup.out,看生成了哪个网段的ip,然后将这个配置进docker的daemon.json文件 接着配置docker的网段
vim /etc/docker/daemon.json添加bip
{ “bip”:“10.10.99.1/24” }
重启docker
systemctl daemon-reload systemctl restart docker.service发现docker0 ip变了,增加了网卡 flannel ----------------------------------------------------------------------------------------- 另一台只需要安装flannel
flannel安装
rpm –ivh flannel-0.7.1-4.el7.x86_64.rpm创建配置 (其中-etcd-prefix是存储网段信息的目录前缀,-iface是物理机的网卡,-etcd-endpionts是etcd的客户端访问地址 )
nohup flanneld -etcd-endpoints=http://172.16.0.73:2379 --etcd-prefix=/docker/network -iface eth0 &查看flannel的日志,就在你运行命令的当前目录下,有个nohup.out,看生成了哪个网段的ip,然后将这个配置进docker的daemon.json,文件 接着配置docker的网段,添加bip
{ “bip”:“10.10.99.1/24” } 重启docker
systemctl daemon-reload systemctl restart docker.service注意:如果你运行容器,然后两主机里面的容器ping通,请在两主机上面执行命令:
iptables -t nat -F POSTROUTING iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables –F iptables -L –n systemctl stop firewalld.service先创建springboot项目,application.yml配置:
server: context-path: / port: 80
然后TestController:
package cn.docker.test.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.text.SimpleDateFormat; import java.util.Date; /** * @author 杨樣儿~ * @date 19-7-18 16:15 * @description web层 **/ @Controller public class TestController { @GetMapping(value = "/test") @ResponseBody public String time(){ Date date=new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(date); } }然后使用mvn package命令开始对spring boot项目进行打包构建,生成target目录 在此目录打开cmd,执行命令启动项目,
java -jar springboot-0.0.1-SNAPSHOT.jar开启浏览器访问http://localhost:80/test,页面返回:当前时间,说明spring boot项目配置运行正常.
Maven规范要求所有的资源文件都应放在src/main/resources目录下,我们在应用的resources目录下创建一个空白的文件Dockerfile,用来说明如何构建docker 镜像,
#jdk1.8 FROM java:8 #信息 MAINTAINER "yye"<1197684268@qq.com> # 生成springbootjar包复制到容器里 jar包名是app ADD springboot-0.0.1-SNAPSHOT.jar app.jar # 暴露的80端口 EXPOSE 80 #启动项目 CMD java -jar app.jar开启docker远程服务
vim /usr/lib/systemd/system/docker.service在[Service]部分的最下面添加下面两行:
ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock 重新加载配置文件并重启服务
systemctl daemon-reload systemctl restart docker然后查看监听的端口
ps -ef|grep docker
用maven读取Dockerfile文件来构建镜像并推送到注册中心去,由于Docker默认的镜像注册中心为Docke Hub(docker.io),当使用docker push命令推送镜像时,实际上是将镜像推送到docker.io的地址上,如果想推送到本地 需要自己搭建的镜像仓库(如:Harbor),则镜像名称需要添加前缀ip:port,因为我们之前已经搭好了本地Registry了,所以在pom.xml文件中添加properties:
<properties> <docker.registry>192.168.37.222:5000</docker.registry> </properties>添加maven plugin到pom.xml文件中:
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.10</version> <configuration> <imageName>${docker.registry}/${project.groupId}/${project.artifactId}:${project.version}</imageName> <dockerDirectory>${project.build.outputDirectory}</dockerDirectory> <dockerHost>http://192.168.37.222:2375</dockerHost> <resources> <resource> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>简要说明一下configuration的配置:
imageName:用于指定镜像的完整名称,其中{docker.registry}为注册中心地址,{project.groupId}为仓库名称,{project.artifactId}为镜像名称,${project.version}为镜像标签名.dockerDirectory:用于指定Dockerfile文件所在的目录.resources.resource.directory:用于指定需要复制的根目录,${project.build.directory}表示target目录.resources.resource.include:用于指定需要复制的文件,${project.build.finalName}.jar表示生成的jar包.构建镜像
mvn docker:build然后就会看到success,就是已经把构建好的镜像推送到docker Registry了 查看构建的镜像 运行镜像
docker run -d -p 58080:80 192.168.37.222:5000/cn.docker.test/springboot:0.0.1-SNAPSHOT查看是否运行成功
curl -XGET http://192.168.37.222:58080/test也可以在windows上查看
http://192.168.37.222:58080/test
注意:192.168.37.222是我虚拟机ip