我正在尝试从一个简单的Spring RESTful Web服务jar构建一个Docker镜像。
为此我已经指定了以下Dockerfile:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
我正试图从我的IDEA cli“使用Maven构建Docker镜像”,如说明中所述here
./mvnw install dockerfile:build
不幸的是,这引发了异常:
Could not build image: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: Permission denied
由于我不知道如何解决这个问题,我尝试使用docker
命令从终端构建图像:
$ docker build nordic/demo
创建了图片,但名称和标记为<none>
。从docker documentations了解它,但没有说到这一点。
我是Docker的新手,所以我确定在如何构建Docker Image方面存在一些根本性的误解。主要是:
感谢您的任何指示或解释!
答案 0 :(得分:1)
使用下面的示例命令在/ var / run / docker中为your_own_username而不是root设置权限,然后尝试一下。
sudo chown -R root:your_own_username / var / run / docker
答案 1 :(得分:0)
此链接有助于使用spring boot构建docker镜像。
<properties>
<docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
此插件包含在您的pom中,您可以在属性字段中更改图像名称。
如果您收到权限被拒绝错误,则必须使用 sudo 命令运行
答案 2 :(得分:0)
运行命令时:
docker build -t demo:1 .
字符串'demo:1'演示是repository
名称和字符串后冒号'1'是tag
的图像和点(。)到底意味着当前目录是build context
您Dockerfile
居住的地方。
存储库可以包含许多图像,并且它们由标记唯一标识。如果你运行这样的命令而不提供标签:
docker build -t demo .
docker将在演示存储库中创建新图像,默认情况下使用image附加名为“latest”的标记,因此本例中的图像将为demo:latest。存储库演示将有2个图像演示:1和演示:最新。标记“最新”并不意味着图像是最新的,它只是标记的名称。