我是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 DeskTop 18.04 有人可以帮我吗?
答案 0 :(得分:1)
您的Dockerfile
可能位于/home/shim/
中?
当您执行docker build .
时,docker将把当前目录的内容打包,并将其发送到docker守护程序。看来/home/shim/.ServiceHub
中的某些文件实际上是套接字,因此此操作失败。
最佳做法是将Dockerfile放在自己的隔离目录中,以避免此类情况。
此外,我建议您通读dockerfile_best-practices,特别是有关RUN
和apt-get
的内容
答案 1 :(得分:0)
嗨,我也面临着同样的问题,并且从此问题中了解了原因。我的Dockerfile在一个步骤中重新启动MySQL,它创建了一个名为mysqld.sock的文件,在构建映像时出现上述错误。 如果是这种情况,那么您可以在仓库本身中添加.sock文件,然后从那里使用它。
答案 2 :(得分:0)
对于此特定示例,您不应在 Dockerfile
中包含 /home/shim
。
对于项目中的套接字 (*.sock
) 文件的一般情况,您可以将 *.sock
添加到 .dockerignore 文件中。