目标:搭建环境并能够正常运行
1.环境搭建
选择环境centos linux jdk1.8 springboot2.6
2.第二步,找官网
Install Docker Engine on CentOS | Docker Documentation
结合国内优秀文章说明
再结合其他一些什么解决报错问题,顺利能装好环境
linux环境执行命令
[root@localhost ~]# sudo yum install -y yum-utils
第三步:安装仓库位置(和maven有点类似吧?) 安装一下国内阿里的?
[root@localhost ~]# sudo yum install -y yum-utils$ sudo yum-config-manager \
> --add-repo \
> https://download.docker.com/linux/centos/docker-ce.repo
第四步:先卸载历史版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
第五步:安装前先执行这个,可能你的环境中缺少这个文件
[root@localhost ~]# yum install docker-ce docker-ce-cli containerd.io --allowerasing
遇到这个报错时,请执行上面的:yum install docker-ce docker-ce-cli containerd.io --allowerasing
- 软件包 runc-1.0.0-72.rc92.module_el8.5.0+1006+8d0e68a2.x86_64 被模块过滤过滤掉
(尝试在命令行中添加 '--allowerasing' 来替换冲突的软件包 或 '--skip-broken' 来跳过无法安装的软件包 或 '--nobest' 来不只使用软件包的最佳候选)
第六步:正式执行安装docker(官网上有)
[root@localhost ~]# sudo yum install docker-ce docker-ce-cli containerd.io
第七步:看是否安装成功
[root@localhost ~]# docker version
第八步:简化命令,省略sudo,否则需要带sudo执行docker命令(一般情况)
执行:sudo usermod -aG docker $USER
第九步:列出本机的所有 image 文件
[root@localhost ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
第10步,编写springboot项目打jar并写好Dockerfile文件
springboot项目可参考其他文章
其中Dockerfile在项目路径外,和jar包在同一个位置,项目中仅为实例使用(可通过shell编程达到目的,此次简化)
[root@localhost dockerwork]# cd /usr/dockerwork
[root@localhost dockerwork]# ll
总用量 44384
-rw-r--r--. 1 root root 137 11月 27 06:44 Dockerfile
-rw-r--r--. 1 root root 45444727 10月 28 09:13 PdfApplication.jar
Dockerfile内容,需要注意的是add部分,将你jar所在的路径写好
FROM java:8 VOLUME /tmp ADD PdfApplication.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
上传jar和Dockerfile上去,然后移动到你指定的文件夹下操作
CRT下:alt+p
sftp> put D:\pdfdemo\target\PdfApplication.jar
Uploading PdfApplication.jar to /root/PdfApplication.jar
100% 44379KB 11094KB/s 00:00:04
D:/pdfdemo/target/PdfApplication.jar: 45444727 bytes transferred in 4 seconds (11094 KB/s)
sftp> put D:\pdfdemo\target\Dockerfile
[root@localhost ~]# mv PdfApplication.jar /usr/dockerwork/
注意Dockerfile不在jar包中
[root@localhost dockerwork]# ll
总用量 44384
-rw-r--r--. 1 root root 137 11月 27 06:44 Dockerfile
-rw-r--r--. 1 root root 45444727 10月 28 09:13 PdfApplication.jar
第十一步:制作镜像(最后有个点)
[root@localhost dockerwork]# docker build -t springbootdemo .
Sending build context to Docker daemon 45.45MB
Step 1/4 : FROM java:8
---> d23bdf5b1b1b
Step 2/4 : VOLUME /tmp
---> Using cache
---> 76787ed369c9
Step 3/4 : ADD PdfApplication.jar app.jar
---> Using cache
---> 0c283fdc7b92
Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
---> Using cache
---> 63c45c0cd5c5
Successfully built 63c45c0cd5c5
Successfully tagged springbootdemo:latest
第十二步:查看镜像并启动
[root@localhost dockerwork]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
springbootdemo latest 63c45c0cd5c5 2 hours ago 689MB
hello-world latest feb5d9fea6a5 2 months ago 13.3kB
此处参数需要注意一下: 9002 是jar文件中启动设置的端口(具体可以通过properties,或者yml文件设置,8080是配置docker的;即做端口映射
[root@localhost dockerwork]# docker run -d -p 8080:9002 springbootdemo
abea14f77340cb86df10c42d5cabcc4b5bc3a2d77970ba11f763afcb03b9a46a
查看容器启动情况
[root@localhost dockerwork]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abea14f77340 springbootdemo "java -Djava.securit…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->9002/tcp, :::8080->9002/tcp practical_bose
第十三步:停止
找到容器id(CONTAINER ID)-- 命令:docker container kill 容器id
[root@localhost dockerwork]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abea14f77340 springbootdemo "java -Djava.securit…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->9002/tcp, :::8080->9002/tcp practical_bose
[root@localhost dockerwork]# docker container kill abea14f77340
若需要删除镜像文件(先停止对应的镜像,根据镜像id删除)
[root@localhost dockerwork]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
abea14f77340 springbootdemo "java -Djava.securit…" 8 minutes ago Exited (137) 4 minutes ago practical_bose
[root@localhost dockerwork]# docker stop abea14f77340
bdfe6c66a9bb
[root@localhost dockerwork]# docker rm abea14f77340
bdfe6c66a9bb
至此完成初步的搭建,实际生成一般组合其他shell脚本来制作镜像(jekeins打包部署)
一套组合拳:
springboot/springcloud+docker+jekeins+k8s