1,pom.xml文件配置插件 <!--直接打包到远程服务器的docker中--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</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>motormmcs</imageName> <!--指定标签--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定 Dockerfile 路径 ${project.basedir}:项目根路径下--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!--指定远程 docker api地址--> <dockerHost>http://填写IP:端口</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> <!-- 以下两行是为了docker push到DockerHub使用的。 --> <serverId>docker-hub</serverId> <registryUrl>https://index.docker.io/v1</registryUrl> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <include>**/*.json</include> <include>**/*.ftl</include> </includes> </resource> </resources>
2,创建docker文件夹,新建dockerfile(可以忽略大小写),内容
#jdk版本 FROM java:8 VOLUME /tmp #打包是motormmcs-1.0.2.jar motor.jar是别名 ADD motormmcs-1.0.2.jar motor.jar #路径 RUN bash -c 'touch /motor.jar' #对外端口 EXPOSE 8082 #启动jar ENTRYPOINT ["java", "-jar", "motor.jar"]
3,idea下载docker,指定上面写的dockerfile文件
4,在配置docker时,记录相关问题,可以查看一下
学习网站
https://www.runoob.com/docke
查看所有镜像
docker images
常用命令linux是一样的
创建文件夹,用于存放后面的相关东西。
mkdir -p /nginx/www /nginx/logs /nginx/conf
启动nginx,指定配置文件,我们实际修改是D盘的东西,指定到docker上面
docker run -d -p 8081:80 --name nginx-test-web -v /nginx/www:/usr/share/nginx/html -v /nginx/conf/nginx.conf:/etc/nginx/nginx.conf nginx
杀进程,杀了后还能访问
docker kill -s HUP nginx-test-web
重启
docker restart nginx-test-web
停止,不能访问了
docker stop nginx-test-web
查看正在运行的服务信息
docker ps
查看容器的信息 下面的5是看5列信息
docker ps -n 5
有些服务stop和kill,查看看在运行,要移除就好了
参考https://blog.csdn.net/guyunzh/article/details/85779154
docker rm nginx-test-web , nginx-b-web
参考:https://www.cnblogs.com/spll/p/9957769.html
部署服务要挂载到服务器中
查找启动tomcat
docker ps
找到id=9fccf0236619后,找到在docker容器的的地址
docker exec -it 9fccf0236619 /bin/bash
找到地址后bb276708a79a:/usr/local/tomcat/webapps
cp到服务器中
docker cp /usr/local/testJavaProject/test01.war 9fccf0236619:/usr/local/tomcat/webapps
在idea中连接不上,可能远程端口没有访问
参考:https://blog.csdn.net/ChineseYoung/article/details/83107353
docker在服务器上部署,
1,把已经打好包上传到服务器,(rz上传,记住打包要是可以运行的,自己现在本地试一遍,正常后再上传到服务器中)
2,创建dockerFile文件,下面是内容
每个命令开头都是大写,这是规则
FROM java --这是java程序,基础镜像就是java,没有他会自动到去下载,手动下载docker pull java
ADD docker_test.jar /docker_test.jar
EXPOSE 8080 --这个是对外的端口tomcat启动默认是8080 也可写 8080:8080(外:内)
ENTRYPOINT ["java", "-jar", "/docker_test.jar"]
保存文件
3,启动构建, -f 是文件配置 -t 是images名称 v1是版本 . 是当前路径
docker build -f dockerFile -t liu/test:v1 .
4,启动程序
docker run --name docker_test -p 8086:8080 -d liu/test:v1
docker run --name docker_test22 -p 8087:8080 -d liu/test:v1
对外端口只能有一个不能重复,内部端可以重复用
5,访问
http://121.40.150.88:8086/
在idea镜像碰到坑,文件必须要以这个(dockerfile)命名,不分大小写
移除容器
1.docker stop<容器ID或容器名> ,容器停止了,当时没有及时移除,可能随着docker启动还能访问
2.docker rm <容器ID或容器名> ,移除后就不能在访问了
移除镜像
一个镜像名称可以有多个,如java ,java:8 ,但是images ID都是样,说明是同一个镜像,删除时就会提醒有引用
,这里需要强制删除才有效果
1,简单删除Docker rmi <容器ID或容器名>
2,docker rmi -f 974851f7993e 这里是强制删除的,主要是同一个id的都没有了
镜像后面的tag默认是latest,启动容器可以不写,如果你重新命名,那就要带上不然启动不了