从 Dockerfile 创建的 Docker 镜像无法运行

问题描述 投票:0回答:1

我正在使用 Nvidia RAPIDS docker 容器。当我直接运行他们的 docker 时,我可以看到容器已启动并正在运行:

docker run --gpus all --pull always --rm -it -d --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 rapidsai/base:24.12-cuda12.5-py3.12

表演

CONTAINER ID   IMAGE                                 COMMAND                  CREATED         STATUS         PORTS     NAMES
1a8732f6b7c6   rapidsai/base:24.12-cuda12.5-py3.12   "/home/rapids/entryp…"   3 seconds ago   Up 2 seconds             happy_brahmagupta

现在这个容器没有我想要的特定二进制文件。例如,

vim
。所以我创建了一个使用此图像的新
Dockerfile

FROM rapidsai/base:25.02a-cuda11.8-py3.12-amd64
WORKDIR /home/rapids

CMD ["apt-get", "install", "vim"]

当我构建并运行图像时,我看到没有容器在运行:

docker run --gpus all --pull always --rm -it -d --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 samanaghazadeh/custom-docker

给我

CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

如果我在命令末尾添加

/bin/bash
,我可以看到容器正在运行。但是,我无法运行 vim。看起来
CMD ["apt-get", "install", "vim"]
甚至没有被执行。

我对 Docker 很陌生,无法理解我做错了什么。

docker dockerfile
1个回答
0
投票

RUN
命令中使用 apt-get 安装 vim。

# Use the existing rapidsai/base image as the base
FROM rapidsai/base:25.02a-cuda11.8-py3.12-amd64

# Update package lists and install vim
RUN apt-get update && \
    apt-get install -y vim && \
    rm -rf /var/lib/apt/lists/*

# (Optional) Set the default command if needed
# This step is usually unnecessary unless you want to override the base image's CMD or ENTRYPOINT
# CMD ["bash"]

然后您可以构建图像

docker build -t rapidsai-with-vim:latest .

并运行图像

docker run -it rapidsai-with-vim:latest bash

进入容器后,尝试启动 vim:

vim --version

© www.soinside.com 2019 - 2024. All rights reserved.