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,啓動容器可以不寫,如果你重新命名,那就要帶上不然啓動不了