1. 程式人生 > 其它 >docker執行程式

docker執行程式

技術標籤:docker

一般文件使用docker的docker-maven-plugin外掛可以生成映象,配置如下

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.14</version>
<configuration>
<imageName>renren/fast</imageName>


<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
<!-- 執行命令 mvn clean package docker:build 打包並生成docker映象 -->
</plugin>

imageName指定了映象名稱,應該生成映象也是需要同級目錄的Dockerfile檔案。由於在windows開發環境沒有docker,我們將jar包上傳到linux伺服器。

還有Dockerfile檔案。

Dockerfile內容如下

FROM java:8
EXPOSE 9101

VOLUME /tmp
ADD televr.jar  /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

在當前目錄進行映象執行 Docker build打包 -t指明映象名稱 -f指明檔案 .指明在當前目錄

然後檢視生成的映象

執行映象,這裡沒有在後臺執行ctrl+c結束程式,容器就關閉了。

springboot是8080埠,docker對外暴露是9101埠,外面通過9101訪問訪問不到。重新指定埠對映

使用-p指定埠對映,-d為後臺執行。注意引數要在前面。下面NAMES容器名稱,可以通過--name 指定比如docker run -p 8080:8080 --name televr televr:v1

[[email protected] televr]# docker run -p 9101:8080 -d televr:v1 
1c7139e67e4fb3e207987fa92031e76f866577f57148af583c168f38fbd3ef24
[[email protected] televr]# docker ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                              NAMES
1c7139e67e4f        televr:v1                   "java -jar /app.jar"     20 seconds ago      Up 12 seconds       9101/tcp, 0.0.0.0:9101->8080/tcp   jolly_ardinghelli
ad5b52ca9150        bladex/sentinel-dashboard   "java -Djava.securit??   4 weeks ago         Up 4 weeks          8719/tcp, 0.0.0.0:8858->8858/tcp   sentinel

通過外面telnet虛擬機器的9101埠連線不上,在虛擬機器本機telnet localhost 9101 會出現如下Connection closed by foreign host

停止容器執行,估計是虛擬機器沒有開放9101埠

docker stop dd5915f69ec9d5e252b16232ea8d8d3d001b29d8f2cbf371020a8a4a5fb281bc

使用8080埠(開放外網訪問) 啟動容器docker run -p 8080:8080 -d --name televr televr:v1 進入容器內部驗證訪問成功

[[email protected] televr]# docker exec -it 1f61c3dc0d40 bash 
[email protected]:/# curl http://localhost:8080/televr/sys/config/list

外網telnet成功,訪問成功。Dockfile配置的Expose埠9101只是說明容器要暴露的埠,實際我們並不是這個段口。