1.安装基础环境
(1)将centos7.tar上传到/opt 解压(tar包在最后的链接中)
docker load -i centos7.tar
(2)创建文件夹
mkdir /usr/local/dockerfileJdk
(4)把jdk安装包,也放到此文件下
(3)此文件夹下,新建dockerfile文件
vim dockerfile
(5)编写内容
FROM centos:7
MAINTAINER hopeys
RUN mkdir -p /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_171
ENV PATH=$PATH:$JAVA_HOME/bin
(6) 执行命令构建镜像;不要忘了后面的那个 .
docker build -t centos7-jdk8 .
(7)查看镜像是否建立完成
docker images
(8)创建容器
docker run -it --name centos7-jdk8-base centos7-jdk8 /bin/bash
(9)java检测
2.dockerfile 手动部署(了解)
(1)继续编辑刚刚的dockerfile文件
cd /usr/local/dockerfileJdk/
并上传响应jar包到此文件下
(2)vim dockerfile
FROM centos7-jdk8
MAINTAINER hopeys
EXPOSE 8080
ADD myDockerDemo-0.0.1-SNAPSHOT.jar /myDockerDemo-0.0.1-SNAPSHOT.jar
WORKDIR /
ENTRYPOINT ["java" , "-jar" , "myDockerDemo-0.0.1-SNAPSHOT.jar"]
(3)构建
docker build -t mydemo-docker:v1.0 .
(4)创建容器
docker run -it --name mydemo -p 8080:8080 mydemo-docker:v1.0
(5)测试
http://47.96.65.63:8080/aaa
3.dockerfile 自动部署
(1)在pom.xml文件中添加Maven的docker插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.2</version>
<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase(阶段)上。也就是说,用户只需执行mvn package,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<!--指定生成的镜像名-->
<imageName>${project.artifactId}</imageName>
<!--指定标签,也就是版本号,可以自定义-->
<imageTags>
<imageTag>v2.0</imageTag>
</imageTags>
<!--指定远程 docker api地址 也就是服务器ip+docker的端口号-->
<dockerHost>http://192.168.136.142:2375</dockerHost>
<!-- 指定 dockerfile 路径-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!-- 是否跳过docker构建 -->
<skipDockerBuild>false</skipDockerBuild>
</configuration>
</plugin>
安装docker插件
(2)docker服务端开启远程访问
#修改该文件
vim /lib/systemd/system/docker.service
#找到ExecStart行,修改成如下内容
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
systemctl daemon-reload #重启守护进程
systemctl restart docker #重启docker
关于开放端口2375,会导致被攻击,进行挖矿等问题。应配置加密认证等操作
(3)编写dockerfile文件
注意:
- 该文件的位置必须是和pom.xml处于同一个目录
- 关闭防火墙或开发端口
注意:这个生成的jar包在target中,所以路径改;jar包名也都是小写的,特别注意第4行,第6行jar包名也要小写
FROM centos7-jdk8
MAINTAINER hopeys
EXPOSE 8080
ADD target/mydockerdemo-0.0.1-SNAPSHOT.jar /mydockerdemo-0.0.1-SNAPSHOT.jar
WORKDIR /
ENTRYPOINT ["java" , "-jar" , "mydockerdemo-0.0.1-SNAPSHOT.jar"]
(4)执行maven的打包命令
mvn clean package -DskipTests # 打包跳过测试
mvn clean package -DskipTests -DskipdockerBuild # 打包跳过测试的同时跳过构建
(5)docker访问镜像查看
(6)创建容器并进行访问
docker run -d --name mydemo2-docker -p 8080:8080 mydockerdemo:v2.0
centos7.tar
链接:https://pan.baidu.com/s/1Xjlw-5IxFaRkpBSmjOjU_w?pwd=6666
提取码:6666
如果报错:构建docker镜像报错:Cannot retry request with a non-repeatable request entity: Connection reset by peer
解决:名称改小写