一、环境准备
- 准备一个简单空的springboot项目
- 准备一台有网络的linux服务器,并且已经部署docker
二、部署docker
1.直接参考菜鸟教程的docker安装教程
2.docker拉取java 8镜像
启动springboot需要jdk的支持,所以直接拉取java8
镜像即可
docker pull java:8
第一次拉取java8镜像时,错误 net/http: TLS handshake timeout
问题原因 :该命令默认从docker远端镜像仓库中拉取镜像,但由于远端仓库的服务器是在国外,我们国内有的用户很可能都访问不了
解决:通过配置/etc/docker/daemon.json为国内的加速引擎可以解决这个问题。
但是又遇到了找不到daemon.json文件的问题
可参考文章Docker 找不到etcdockerdaemon.json问题解决_m0_67401835的博客-CSDN博客_docker 没有daemon.json
具体操作为先跳转到对应目录下
cd /etc/docker
新建编辑daemon.json
vim daemon.json
在文件中保存如下配置
{
"registry-mirrors": ["https://drcy3veo.mirror.aliyuncs.com"]
}
然后重启docker
sudo systemctl restart docker
这里可以检查一下配置的镜像是否生效:
docker info
如果显示的配置信息的末尾部分出现如下字样,说明配置完成:
三、部署项目
-
编写Dockerfile文件(在jar包同级目录下编辑)
FROM java:8
MAINTAINER DuZhuo
ADD ./dockerpackagedemo-0.0.1-SNAPSHOT.jar dockerTest.jar
CMD java -jar dockerTest.jar
配置解析:
FROM java:8 :定义父镜像,即jdk8
MAINTAINER DuZhuo:定义作者信息
ADD ./dockerpackagedemo-0.0.1-SNAPSHOT.jar dockerTest.jar :将项目包jar包加入并且重命名
CMD java -jar dockerTest.jar 定义容器启动执行的命令
2. Dockerfile构建镜像
目录依然需要在jar包那个目录下执行
docker build -f ./Dockerfile -t dockertest .
-f ./Dockerfile 指目录下的Dockerfile文件
-t dockertest 构建镜像的名称
注意最后的 '.'
这个'.' 代表当前路径,不添加会有报错 :“docker build” requires exactly 1 argument
详情可参考Docker使用遇到问题:"docker build" requires exactly 1 argument(s)._CC丶Z的博客-CSDN博客
3.查看镜像
docker images
查看是否创建成功
4.创建容器
docker run -id --name dockertest -p 8082:8082 dockertest
前一个dockertest是命名运行容器名称, 后一个dockertest 是镜像名称
5.查看正在运行的容器
docker ps
6.关闭服务
docker stop dockertest
docker start dockertest
docker restart dockertest
依次是关闭服务,起服务,重启服务