目标:搭建环境并能够正常运行

1.环境搭建

选择环境centos    linux    jdk1.8   springboot2.6
2.第二步,找官网
Install Docker Engine on CentOS | Docker Documentation
结合国内优秀文章说明
Docker 入门教程 - 阮一峰的网络日志
再结合其他一些什么解决报错问题,顺利能装好环境
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

docker spring boot 服务 日志 docker springboot 指定profile_spring

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