1.手动制作镜像
模拟环境,将 eclipse上打好的war包放进tomcat里面去,再运行网页
- 停止Linux上的tomcat:找到你Linux上的tomcat的bin目录,然后运行
[root@localhost bin]# ./shutdown.sh
- 下载一个tomcat镜像,版本自己确定,我的是tomcat7
[root@localhost bin]# docker pull tomcat:7
- 运行并创建tomcat容器
[root@localhost bin]# docker run --name mytomcat --net host -itd tomcat:7
解释:创建一个名字是mytomcat,并且和宿主机在同一网络下的容器
- 在浏览器上保证访问tomcat的8080端口时会出现tomcat的首页
- 将war拷贝到tomcat容器的/usr/local/tomcat/webapps
1 将war包上传到linux的根目录下
2 将/test.war拷贝到容器的/usr/local/tomcat/webapps
[root@localhost /]# docker cp /test.war mytomcat:/usr/local/tomcat/webapps
解释:将宿主机根目录下的war包,拷贝到doacker容器名是mytomcat的/usr/local/tomcat/webapps下
- 确认能够出现html的网页
- 构建镜像
[root@localhost /]# docker commit mytomcat mytomcat:1.0
解释:将名字是mytomcat的容器构建成名字是mytomcat的镜像,镜像版本是1.0
- 创建新镜像的容器
删除之前创建的容器,并且再创键一个mytomcat:1.0镜像的容器
[root@localhost /]# docker rm -f mytomcat
[root@localhost /]# docker run --net host -itd --name mytomcat mytomcat:1.0
- 进入新容器查看
[root@localhost /]# docker exec -it mytomcat bash
root@localhost:/usr/local/tomcat# cd webapps
root@localhost:/usr/local/tomcat/webapps# ls
这时你会发现之前的那个war包还是存在的
并且能在浏览器运行
2.导出镜像
我这里有一个mytomcat:1.0 的镜像
导出镜像
[root@localhost /]# docker save mytomcat -o mytomcat1
解释:前面那个mytomcat是我已有的镜像名,后面mytomcat1是导出去的镜像文件名,可以随便设置
然后在ls查看,会发现一个mytomcat文件,这是你备份在你本地的镜像文件 (文件位置是根据你导出镜像时,所在的目录下)
3.导入镜像
命令:
[root@localhost /]# docker load -i mytomcat1
解释:-i:是指定镜像文件
注意:必须是在你镜像文件存在的那个目录下
错误:这里会报一个错:Loaded image: mytomcat:1.0
,意思是已经存在这个镜像了,删除之前的镜像就可以了
4.Dockerfile镜像文件构建(推荐)
- 打开Notepad++,在/opt目录下新建一个docker_Dockerfile目录,接着在创建一个Dockerfile文件,并将打好的war包放到目录下
注意:文件名必须是Dockerfile - Dcokerfile文件内容
- 执行生成镜像的命令
[root@localhost docker_Dockerfile]# docker build -t autotomcat:1.0 .
注意:要在你创建的docker_Dockerfile目录下
解释:最后一个.表示指定你Dockerfile文件, -t:表示你生成的镜像名称:tag
- 创建容器
[root@localhost docker_Dockerfile]# docker run --name auto --net host -itd autotomcat:1.0
- 在浏览器上运行
5.docker使用maven远程构建
1 .docker远程服务
docker默认情况下 本机 使用 docker命令操作镜像和容器 docker提供了 -H可以连接远程的docker服务器镜像远程镜像
和容器管理,项目中使用maven可以通过DockerFile远程连接并构建镜像 ,达到快速测试的目的
默认docker服务启动 文件(/usr/lib/systemd/system/docker.service)编辑文件
在ExecStart后面 添加一行(表示启动2375端口 用于监听远程操作)
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重新加载服务
[root@localhost /]# systemctl daemon-reload
重启docker服务
[root@localhost /]# service docker restart
注意:出现Redirecting to /bin/systemctl restart docker.service就表示没问题
2.使用dockerfile-maven-plugin插件远程构建docker
- 系统环境变量中添加一个环境变量 用于制定 docker的主机和端口
- 在你maven的pom.xml中分别添加添加dockerfile-maven-plugin【官网 https://github.com/spotify/dockerfile-maven】用于远程生成镜像 spring-boot-maven-plugins用于制定打包后的main方法类
在pom.xml上添加
<build>
<!-- 设置包名 -->
<finalName>test</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<!--
设置镜像的名字
镜像名不能有大写
-->
<repository>testmaven</repository>
<!-- 设置版本号 -->
<tag>1.0</tag>
<buildArgs>
<!-- 要打的war包 ${project.build.finalName}:拿到上面设置的包名 -->
<JAR_FILE>target/${project.build.finalName}.war</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
- 项目根目录下添加 Dockerfile文件
- 注意:test.war是打出来的war包,必须和pom.xml上设置的包名一致,Dockerfile文件名不能改
- 生成镜像
1.右键项目—show In-----Terminal
2.输入echo %DOCKER_HOST%,检查是否根环境变量的一致
3在输入命令:mvn clean package dockerfile:build -DskipTests
注意:maven不能运行这样镜像就构建完成了,查看: