构建镜像
以sentinel-dashboard-1.6.3.jar为例,将该微服务的可运行jar包构建成docker镜像。
1、将jar包上传linux服务器/usr/local/docker-app/docker-demo/app/sentinel目录,在jar包所在目录创建名为Dockerfile的文 件2、在Dockerfile中添加以下内容
2、在Dockerfile中添加以下内容
# 基于哪个镜像
From java:8
# 复制文件到容器
ADD sentinel-dashboard-1.6.3.jar /sentinel.jar
# 声明需要暴露的端口
EXPOSE 9999
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-jar","-Dserver.port=9999","/sentinel.jar"]
3、使用docker build命令构建镜像
docker build ‐t sentinel:1.6.3 .
#格式: docker build -t 镜像名称:标签 Dockerfile的相对位置
在这里,使用-t选项指定了镜像的标签。
4、启动镜像,加-d可在后台启动
docker run ‐d ‐p 9999:9999 sentinel:1.6.3
5、访问http://Docker宿主机IP:9999,可正常显示sentinel主页
curl http://localhost:9999
2、上传镜像到Docker Hub
docker login
# 配置tag,DockerHub账号/镜像名称
docker tag sentinel:1.6.3 core815/sentinel:1.6.3
# push
docker push core815/sentinel:1.6.3
3、使用deployment部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: sentinel-deployment
labels:
app: sentinel
spec:
replicas: 1
selector:
matchLabels:
app: sentinel
template:
metadata:
labels:
app: sentinel
spec:
containers:
- name: sentinel
imagePullPolicy: Always # 如果没有此设置,会导致一直不拉取DockerHub最新镜像
image: core815/sentinel:1.6.3
ports:
- containerPort: 9999
4、使用service对外暴露端口
apiVersion: v1
kind: Service
metadata:
name: sentinel-service
spec:
type: NodePort
selector:
app: sentinel
ports:
- name: http
protocol: TCP
port: 9999
targetPort: 9999
执行如下命令创建商品服务的service:
kubectl apply -f sentinel-service.yaml
查看对外暴露端口:
kubectl get svc|grep sentinel
访问sentinel
curl http://127.0.0.1:30519