我有一个运行ipfs的docker容器,但我在添加文件时出错,因为本地文件无法识别。我想知道是否有人知道原因是什么——
buntu@ip-172-31-39-89:~/.ipfs$ ll
total 76
drwxrwxr-x 8 ubuntu ubuntu 4096 Oct 31 11:38 ./
drwxr-xr-x 11 ubuntu ubuntu 4096 Oct 31 11:28 ../
-rw-r--r-- 1 ubuntu users 21 Oct 31 11:32 api
drwxr-xr-x 18 ubuntu ubuntu 4096 Oct 31 11:32 blocks/
-rw-rw---- 1 ubuntu ubuntu 4342 Oct 28 10:33 config
drwxr-xr-x 2 ubuntu ubuntu 4096 Oct 31 11:32 datastore/
-rw------- 1 ubuntu ubuntu 190 Oct 25 11:34 datastore_spec
-rw-rw-r-- 1 ubuntu ubuntu 299 Oct 30 15:28 docker-compose.yml
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 30 15:45 ipfs-data/
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 30 15:44 ipfs-staging/
drwxr-xr-x 2 root root 4096 Oct 30 15:26 ipfsdata/
drwx------ 2 ubuntu ubuntu 4096 Oct 25 11:34 keystore/
-rw-r--r-- 1 root root 0 Oct 31 11:38 kkk
-rw-r--r-- 1 ubuntu users 0 Oct 31 11:32 repo.lock
-rw-rw-r-- 1 ubuntu ubuntu 95 Oct 28 10:43 swarm.key
-rw-rw-r-- 1 ubuntu ubuntu 10294 Oct 31 11:26 t
-rw-rw-r-- 1 ubuntu ubuntu 14 Oct 31 10:58 tet
-rw-r--r-- 1 ubuntu ubuntu 2 Oct 25 11:34 version
ubuntu@ip-172-31-39-89:~/.ipfs$ sudo docker exec ipfs-node ipfs add tet
Error: lstat tet: no such file or directory
映射如下所示-
sudo docker run -d --name ipfs-node
-v /tmp/ipfs-docker-staging:/export -v /home/ubuntu/.ipfs:/data/ipfs
-p 8080:8080 -p 4001:4001 -p 127.0.0.1:5001:5001
jbenet/go-ipfs:latest
为了在那里添加文件,您必须确保它们存在于容器中。
当您执行sudo docker exec ipfs-node ipfs add tet
时,实际上是在告诉ipfs添加容器WORKDIR中的tet文件,与执行命令的位置无关。因此,除非该文件实际存在于WORKDIR
中,否则将找不到它。
在您的情况下,您必须将文件存储在/tmp/ipfs-docker-staging
或/home/ubuntu/.ipfs
中,然后您必须在docker容器中提供路径。例如
# for files stored in /home/ubuntu/.ipfs:
sudo docker exec ipfs-node ipfs add /data/ipfs/tet
# for files stored in /tmp/ipfs-docker-staging
sudo docker exec ipfs-node ipfs add /export/tet.new