今天在学习基于docker构建镜像的时候遇到一个问题
一下是我的dockerfile
# 指定基础镜像
FROM java:8
COPY ./zhiwei.jar /opt/zhiweiapp.jar
# 暴露端口
EXPOSE 8000
# 入口,java项目的启动命令
ENTRYPOINT java -jar /opt/zhiweiapp.jar
虽然我们可以基于Ubuntu基础镜像,添加任意自己需要的安装包,构建镜像,但是却比较麻烦。所以大多数情况下,我们都可以在一些安装了部分软件的基础镜像上做改造。
例如,构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。
需求:基于java:8-alpine镜像,将一个Java项目构建为镜像
实现思路如下:
① 新建一个空的目录 java8-demo,然后在目录中新建一个文件,命名为Dockerfile
② 拷贝课前资料提供的docker-demo.jar到这个目录java8-demo中
③ 创建一个txt: 命名为:dockerfile 不用后缀
a )基于java:8-alpine作为基础镜像
b )将docker-demo.jar拷贝到文件中
c )暴露端口
d )编写入口ENTRYPOINT
内容如下:
FROM java:8-alpine
COPY ./docker-demo.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
④ 使用docker build命令构建镜像
docker build -t javaweb:2.0 .
⑤ 使用docker run创建容器并运行
docker run --name javaweb2.0 -p 8090:8090 -d javaweb:2.0
⑥开始采坑 端口会占用, 之前启动了一个了, 现在要学会怎么处理
查看已经启动的容器 docker ps docker ps -a查看所有端口
停掉这个容器 docker stop b10a9f62c351 会有点小久… 正常现象
如果出现名字被占用了 可以删除这个容器 docker rm id号
在查看所有启动中的容器 docker ps
然后在查看所有容器, 看看有没有同名的. 或者占用这个端口的, docker ps -a
检查通过的话, 就重新启动
是否网络有问题?
docker 仓库镜像地址配置的什么
换成openjdk