Docker构建错误,archive/tar:不支持sockets。

9

我是Docker的新手,正在尝试构建一个镜像。 使用Docker commit命令成功完成了此操作,但是当我尝试使用Dockerfile时,出现了以下错误:

shim@shim-Inspiron-5570:~$ sudo docker build -t shim/debian .
[sudo] password for shim: 
ERRO[0014] Can't add file /home/shim/.ServiceHub/bc1be858c1/116f2fb4b7 to tar: archive/tar: sockets not supported 
ERRO[0014] Can't add file /home/shim/.ServiceHub/bc1be858c1/11a6628921 to tar: archive/tar: sockets not supported 
ERRO[0014] Can't add file /home/shim/.ServiceHub/bc1be858c1/2cb20241cd to tar: archive/tar: sockets not supported 
ERRO[0014] Can't add file /home/shim/.ServiceHub/bc1be858c1/4964606154 to tar: archive/tar: sockets not supported 
ERRO[0014] Can't add file /home/shim/.ServiceHub/bc1be858c1/bc1be858c1 to tar: archive/tar: sockets not supported 
^Cnding build context to Docker daemon  1.725GB

Docker文件的外观如下:
FROM debian:shim
RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y vim

我正在使用Ubuntu桌面版18.04。 有人可以帮我吗?

4个回答

13

看起来你的Dockerfile可能在/home/shim/中?

当你执行docker build .时,Docker会将当前目录的内容打包成tar文件并发送到Docker守护进程。看起来/home/shim/.ServiceHub中的一些文件实际上是sockets,因此此操作失败了。

最佳实践是将Dockerfile放在自己独立的目录中,以避免出现这样的问题。

此外,我建议阅读dockerfile_best-practices,特别是关于RUN&apt-get的部分。


4
对于这个特定的例子,您不应该在/home/shim中使用Dockerfile
对于项目中的套接字(*.sock)文件的一般情况,您可以将*.sock添加到您的.dockerignore文件中。

0

嗨,我也遇到了同样的问题,并从这个问题中了解到了原因。我的Dockerfile在一个步骤中重新启动了MySQL,并创建了一个名为mysqld.sock的文件,这是构建镜像时出现上述错误的原因。 如果您也是这种情况,那么您可以将.sock文件添加到仓库中,然后从那里使用它。


0

如果我们在主文件夹中启动命令docker build,则会出现错误。我的Dockerfile位于子文件夹中,从/home/$USER调用docker build -f /home/$USER/mydocker/Dockerfile也会导致错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接