如何使用podman在Dockerfile中复制符号链接目录



我有一个复杂的conda环境,我想在构建时将其复制到容器中。conda环境预先存在,并且在生成目录层次结构之外。这是我正在使用的Dockerfile

FROM code.ornl.gov:4567/olcfcontainers/olcfbaseimages/mpiimage-centos-cuda
RUN mkdir /app
# conda is local symlink to conda env hierarchy outside the current working directory
COPY conda/ /app
RUN cd /app && conda activate /app/conda

我在使用podman构建时遇到以下错误:

STEP 6: COPY conda /app
Error: error building at STEP "COPY conda /app": error adding sources [/gpfs/alpine/bif135/scratch/mcoletti/deepmd_on_Summit/conda]: error reading "/gpfs/alpine/bif135/scratch/mcoletti/deepmd_on_Summit/conda": error during bulk transfer for copier.request{Request:"GET", Root:"/", preservedRoot:"/gpfs/alpine/bif135/scratch/mcoletti/deepmd_on_Summit", rootPrefix:"/gpfs/alpine/bif135/scratch/mcoletti/deepmd_on_Summit", Directory:"/", preservedDirectory:"/gpfs/alpine/bif135/scratch/mcoletti/deepmd_on_Summit", Globs:[]string{"/conda"}, preservedGlobs:[]string{"/gpfs/alpine/bif135/scratch/mcoletti/deepmd_on_Summit/conda"}, StatOptions:copier.StatOptions{CheckForArchives:false, Excludes:[]string(nil)}, GetOptions:copier.GetOptions{UIDMap:[]idtools.IDMap(nil), GIDMap:[]idtools.IDMap(nil), Excludes:[]string(nil), ExpandArchives:false, ChownDirs:(*idtools.IDPair)(0xc0004a73d0), ChmodDirs:(*os.FileMode)(nil), ChownFiles:(*idtools.IDPair)(0xc0004a73e0), ChmodFiles:(*os.FileMode)(nil), StripSetuidBit:true, StripSetgidBit:true, StripStickyBit:false, StripXattrs:false, KeepDirectoryNames:false, Rename:map[string]string(nil)}, PutOptions:copier.PutOptions{UIDMap:[]idtools.IDMap(nil), GIDMap:[]idtools.IDMap(nil), DefaultDirOwner:(*idtools.IDPair)(nil), DefaultDirMode:(*os.FileMode)(nil), ChownDirs:(*idtools.IDPair)(nil), ChmodDirs:(*os.FileMode)(nil), ChownFiles:(*idtools.IDPair)(nil), ChmodFiles:(*os.FileMode)(nil), StripXattrs:false, IgnoreXattrErrors:false, IgnoreDevices:false, NoOverwriteDirNonDir:false, Rename:map[string]string(nil)}, MkdirOptions:copier.MkdirOptions{UIDMap:[]idtools.IDMap(nil), GIDMap:[]idtools.IDMap(nil), ChownNew:(*idtools.IDPair)(nil), ChmodNew:(*os.FileMode)(nil)}}: copier: get: lstat "/conda"("/gpfs/alpine/proj-shared/chm174/conda"): lstat /gpfs/alpine/proj-shared/chm174/conda: no such file or directory

是的,这条路确实存在。

请注意,这是在橡树岭国家实验室的Summit超级计算机上,因此可能也有一些当地的怪异之处。

答案就是从这个评论中得到的。由于我只想在conda-env中进行复制,所以我可以在包含conda环境的目录中设置构建上下文,同时指定Dockerfile,后者完全在不同的目录中。

因此:

podman build -f Dockerfile -t containertest:latest /path/to/conda/dir/ ;

最新更新