>当我使用docker容器时,我收到以下错误:
在此处输入图像描述
我的电脑是 64 位 x64 操作系统.docker 版本信息 20.10.12.Ubuntu 版本是 20.03。
运行该命令的 docker 日志如下所示:
time="2022-01-03T10:50:26.312973100+08:00" level=info msg="starting signal loop" namespace=moby path=/run/docker/containerd/daemon/io.containerd.runtime.v2.task/moby/b1cbf20dd5864e91c0d3ebe0522cb0e589babf5a30bc88caa3b23dea52de8e14 pid=853
time="2022-01-03T10:50:27.431678700+08:00" level=info msg="ignoring event" container=b1cbf20dd5864e91c0d3ebe0522cb0e589babf5a30bc88caa3b23dea52de8e14 module=libcontainerd namespace=moby topic=/tasks/delete type="*events.TaskDelete"
time="2022-01-03T10:50:27.432538200+08:00" level=info msg="shim disconnected" id=b1cbf20dd5864e91c0d3ebe0522cb0e589babf5a30bc88caa3b23dea52de8e14
time="2022-01-03T10:50:27.434013300+08:00" level=error msg="copy shim log" error="read /proc/self/fd/14: file already closed"
这是我 run.sh 文件
#!/bin/bash
HASH=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 4 | head -n 1)
GPU=$1
name=${USER}_pymarl_GPU_${GPU}_${HASH}
echo "Launching container named '${name}' on GPU '${GPU}'"
# Launches a docker container using our image, and runs the provided command
if hash nvidia-docker 2>/dev/null; then
cmd=nvidia-docker
else
cmd=docker
fi
NV_GPU="$GPU" ${cmd} run
--name $name
--user $(id -u):$(id -g)
-v `pwd`:/pymarl
-t pymarl:1.0
${@:2}
这是我的码头工人形象
FROM nvidia/cuda:9.2-cudnn7-devel-ubuntu16.04
MAINTAINER Tabish Rashid
# CUDA includes
ENV CUDA_PATH /usr/local/cuda
ENV CUDA_INCLUDE_PATH /usr/local/cuda/include
ENV CUDA_LIBRARY_PATH /usr/local/cuda/lib64
# Ubuntu Packages
RUN apt-get update -y && apt-get install software-properties-common -y &&
add-apt-repository -y multiverse && apt-get update -y && apt-get upgrade -y &&
apt-get install -y apt-utils nano vim man build-essential wget sudo &&
rm -rf /var/lib/apt/lists/*
# Install curl and other dependencies
RUN apt-get update -y && apt-get install -y curl libssl-dev openssl libopenblas-dev
libhdf5-dev hdf5-helpers hdf5-tools libhdf5-serial-dev libprotobuf-dev protobuf-compiler git
RUN curl -sk https://raw.githubusercontent.com/torch/distro/master/install-deps | bash &&
rm -rf /var/lib/apt/lists/*
# Install python3 pip3
RUN apt-get update
RUN apt-get -y install python3
RUN apt-get -y install python3-pip
RUN pip3 install --upgrade "pip < 21.0"
# Python packages we use (or used at one point...)
RUN pip3 install numpy scipy pyyaml matplotlib
RUN pip3 install imageio
RUN pip3 install tensorboard-logger
RUN pip3 install pygame
RUN mkdir /install
WORKDIR /install
RUN pip3 install jsonpickle==0.9.6
# install Sacred (from OxWhirl fork)
# RUN pip3 install setuptools
RUN pip3 install --upgrade -vv setuptools
RUN git clone https://github.com/oxwhirl/sacred.git /install/sacred && cd /install/sacred && python3 setup.py install
#### -------------------------------------------------------------------
#### install pytorch
#### -------------------------------------------------------------------
RUN pip3 install torch
RUN pip3 install torchvision snakeviz pytest probscale
## -- SMAC
RUN pip3 install git+https://github.com/oxwhirl/smac.git
ENV SC2PATH /pymarl/3rdparty/StarCraftII
WORKDIR /pymarl
请帮忙!!!我不知道如何解决它。
在你的命令中$GPU
周围加上引号(我会在这里包含固定命令,但我不能从屏幕截图中复制/粘贴)。它似乎没有被设置,如果没有引号,你错过了你的容器应该运行的 python3 命令(相反,它在脚本中将 gpu 变量设置为 python3)。
如果没有 python3 命令,它会尝试执行 python 脚本,并且可能缺少第一行上告诉内核如何执行脚本的#!
(如果脚本未使用 Linux 换行符另存为 utf-8,也会发生这种情况)。