Dockerfile及镜像制作实践
制作JDK镜像
准备工作 1. centos:7镜像 (所有的镜像文件创建时都需要有一个空的centos镜像,就类似通过一个空的光盘或u盘创建一个系统启动盘是一样的) 2. jdk压缩包 jdk-8u51-linux-x64.tar.gz(可以从课前资料获取),基于此压缩包,制作jdk镜像。
创建Dockerfile文件
1.进入jdk-8u51-linux-x64.tar.gz文件所在目录,基于vim创建Dockerfile文件,例如
vim Dockerfile
2.拷贝如下代码到你的Dockerfile中,例如:
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/docker
ENV JAVA_HOME=/usr/local/docker/jdk1.8.0_51 \
PATH=/usr/local/docker/jdk1.8.0_51/bin:$PATH
CMD ['bash']
创建JDK镜像文件
在Dockerfile所在目录执行docker build指令.例如:
docker build -t jdk:8 . #不要丢掉这里的点,-t表示镜像标识(镜像名),是tag单词的缩写.
运行JDK镜像(image)文件
docker run -it jdk:8 bash
基于JDK镜像启动sentinel
1.将sentinel拷贝宿主机指定目录,例如/root/servers目录(servers目录不存在可以自己创建)。 2.启动镜像容器,通过java执行运行web服务
基于jdk:8镜像启动运行sentinel服务(服务启动后可在宿主机通过localhost:8180进行访问)
docker run -d -p 8180:8080 --name sentinel \
-v /root/servers:/usr/sca \
jdk:8 java -jar /usr/sca/sentinel-dashboard-1.8.0.jar
- -d 表示后台运行
- -p 用于实现端口映射(假设外部要访问这个容器,必须要做端口映射)
- –name 表示为启动的容器起一个名字
这里,服务启动后可通过docker ps 指令查看启动的服务,假如看不到服务,可能服务启动失败,可通过如下指令查看具体日志
制作Sentinel镜像
- centos:7镜像(课前资料中的)
- jdk-8u51-linux-x64.tar.gz(可以从课前资料获取)
- sentinel-dashboard-1.8.0.jar
构建Sentinel镜像
1.在sentinel所在目录创建Dockerfile文件,并添加如下内容
FROM centos:7
ADD jdk-8u51-linux-x64.tar.gz /usr/local/
ADD sentinel-dashboard-1.8.0.jar /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8.0_51 \
PATH=/usr/local/jdk1.8.0_51/bin:$PATH
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/sentinel-dashboard-1.8.0.jar"]
其中,EXPOSE表示对外暴露的服务端口,ENTRYPOINT中写的是你容器启动时候要执行的指令.
2.使用 Dockerfile 构建镜像(在Dockerfile所在目录执行docker指令)
docker build -t sentinel:8 . #不要丢掉这里的点
3.后台运行sentinel容器
docker run -d --name sentinel8181 -p 8181:8080 sentinel:8 #-d 表示后台运行,-p用于指定端口映射,sentinel:8为镜像文件名
4.查看sentinel容器
docker ps
|