正常可直接进入第6步
)正常可略过
)正常可略过
)与步骤无关可忽略
)本文是讲述的是怎么样定义Dockerfile,然后在Docker中部署springboot项目。由于只是为了学习docker容器部署。因此本文基于的镜像只是基于单纯的java 8(由于官网弃用了 java 改成了 “operJDK”,镜像是 from xxx,文章中有截图展示)。大家可以根据自身的情况去拉取(添加)不同的镜像,比如MySQL xx版本、Tomcat xx 版本、Nginx xx版本、Redis xx 版本等集成环境。
如果想要集成其它环境,可以参考以下文章:
Java——Linux使用Docker部署若依前后端分离版【保姆级教程】
可参考的文章二
可参考的文章三
创建一个文件夹用来存放上传的jar包程序(位置随意 名字随意 存放java程序)
在这里我是 cd /usr/local 下,创建了一个 my_docker的文件目录
下图所示,我是使用的finalshell 进行直接拖动上传的。
docker pull java:8
Error response from daemon: manifest for java:8-jdk not found: manifest unknown: manifest unknown
查询java镜像 docker search java
官方明确说了 java镜像已经弃用,请使用
openjdk
Dockerfile 更改为FROM openjdk
完美解决
java DEPRECATED; use “openjdk” (or other JDK impl
Dockerfile文件编写规则:
1、指令大小写不敏感,为了区分习惯上用大写
2、Dockerfile 非注释行第一行必须是 FROM
3、文件名必须是 Dockerfile
4、Dockerfile 指定一个专门的目录为工作空间
5、所有引入映射的文件必须在这个工作空间目录下
6、Dockerfile 工作空间目录下支持隐藏文件(.dockeringore)
7、(.dockeringore)作用是用于存放不需要打包导入镜像的文件,根目录就是工作空间目录
8、每一条指令都会生成一个镜像层,镜像层多了执行效率就慢,能写成一条指定的就写成一条。
先 cd my_docker
进入后my_docker目录下,再执行下面命令创建一个Dockerfile的文件
touch Dockerfile
注意:这里不要使用mkdir创建文件
vim Dockerfile
添加以下内容
FROM openjdk
MAINTAINER yjw <yjw@163.com>
ADD person-admin.jar my.jar
EXPOSE 8888
CMD java -jar my.jar
定义父镜像:FROM openjdk (
注意:如果前面没有pull拉取镜像,那么在执行Dockerfile时也会自己拉取
)定义作者信息:MAINTAINER yjw < [email protected] >
将jar包添加到容器: ADD person-admin.jar my.jar
定义容器启动执行的命令:CMD java -jar my.jar
向外暴露项目端口号:8888
docker打包 注意最后有个点 user 是打包成的镜像名
docker build -f ./Dockerfile -t my_project .
docker images
正常可直接进入第6步
)docker run -d --name my_docker -p 8888:8888 my_project
注意:如果以上命令能够正常执行启动,没有出现下面的错误异常!!!那么可以跳过后面解决的步骤。
正常可略过
)下面的错误提示:
docker: Error response from daemon: Conflict. The container name “/my_docker” is already in use by container “69734e81d1d0c091c3c63112d93ab2ecd4eb4ef8b5011df9018a0b6bdc530c84”
. You have to remove (or rename) that container to be able to reuse that name.
See ‘docker run --help’.
原因:由于我命令执行错误,但是在执行过程中容器已经创建成功,再次(第二次)执行相同命令时提示被占用。( 这里我想过初次是创建,后面执行docker start my_docker启动也没生效。可能是别的原因影响了
)
正常可略过
)(这个命令将会强制删除名称为 my_docker 的容器,即使容器正在运行)
docker container rm -f my_docker
使用docker images
命令,发现镜像my_project
没有删除
如上两个图所示,只是容器被删除了,但是镜像等数据没有被删除。
然后执行以下命令,这将创建一个新的容器,并将其继续命名为 my_docker
docker run -d --name my_docker -p 8888:8888 my_project
请注意,这并不会影响旧的容器,只是重命名了容器。
,请使用以下命令:
如果您想删除旧的容器及其所有相关数据
docker container rm -f my_docker && docker image rm my_project
docker logs -f -t my_docker
PS: -t 后面跟的是自己前面步骤创建的docker容器名称。比如我的是my_docker
docker ps -a
创建远程镜像仓库总体步骤
本步骤操作将指导您使用自己的阿里云账号开通容器镜像服务并创建镜像仓库。阿里云容器镜像服务默认实例版可免费使用,其使用限制请参见容器镜像服务计费说明。
1.使用您的阿里云主账号登录容器镜像服务控制台,开通个人版的实例列表。
2.【前往开通】》单击【设置Registry登录密码】》设置阿里云Docker Registry登录密码,然后单击 【确定】 。
3.在容器镜像服务控制台,依次单击 【默认实例】 > 【命名空间】 > 【创建命名空间】,在 【创建命名空间】 弹框中填写命令空间名称,然后单击 【确定】 。
4. 单击 【本地仓库】 > 【创建镜像仓库】 。
5. 在镜像仓库列表
,选择上一步创建的镜像仓库,单击列表中的“操作按钮 ”【管理】
,查看镜像仓库详情。
官网云镜像服务台
登录容器镜像服务控制台,开通个人版的实例列表。
在镜像仓库列表
,选择上一步创建的镜像仓库,单击列表中的“操作按钮 ”【管理】
,查看镜像仓库详情
跟着阿里云的操作指南来执行命令就行。( 注意:由于我先前没有上传过,所以我是先进行的上传后拉取 )
docker images
docker tag e86f19b06dc9 registry.cn-guangzhou.aliyuncs.com/docker_project_space/dockerdemo:1.0
push registry.cn-guangzhou.aliyuncs.com/docker_project_space/dockerdemo:1.0
docker pull registry.cn-guangzhou.aliyuncs.com/docker_project_space/dockerdemo:1.0
docker rmi registry.cn-guangzhou.aliyuncs.com/docker_project_space/dockerdemo:1.0.1
PS:因为我先前创建了一个1.0.1 。所以不要疑惑为什么前面的步骤版本是1.0
与步骤无关可忽略
)本文参考该文章:
linux 服务器 docker 部署 java SpringBoot SpringCloud 项目 jar
上一篇:
Linux 安装Docker完整教程(六)
下一篇:
Linux 环境下Docker将镜像打包导出到本地,上传至内网服务器(八)