我在 Linux 機器(Ubuntu 20.04)中使用 NVIDIA Docker。我創建了一個名為user1using nvidia/cuda:11.0-baseimage 的容器,如下所示:
docker run --gpus all --name user1 -dit nvidia/cuda:11.0-base /bin/bash
而且,如果我運行,這就是我看到的docker ps -a:
admin@my_desktop:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a365362840de nvidia/cuda:11.0-base "/bin/bash" 3 seconds ago Up 2 seconds user1
ssh我想通過使用來自完全不同的機器(除了my_desktop主機)的唯一 IP 地址來訪問該容器。首先,是否可以為每個容器授予唯一的 IP 地址?如果是這樣,我該怎么做?提前致謝。
uj5u.com熱心網友回復:
如果您想從外部 VM 使用 ssh 訪問您的容器,您需要執行以下操作
- 為您的容器安裝 ssh 守護行程
- 運行容器并暴露其 ssh 埠
我會提出以下 Dockerfile,它從nvidia/cuda:11.0-base內部構建并創建一個帶有 ssh 守護行程的影像
Dockerfile
# Instruction for Dockerfile to create a new image on top of the base image (nvidia/cuda:11.0-base)
FROM nvidia/cuda:11.0-base
ARG root_password
RUN apt-get update || echo "OK" && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo "root:${root_password}" | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
從 Dockerfile 構建鏡像
docker image build --build-arg root_password=password --tag nvidia/cuda:11.0-base-ssh .
創建容器
docker container run -d -P --name ssh nvidia/cuda:11.0-base-ssh
跑去docker ps看看container port

最后,訪問容器
ssh -p 49157 root@<VM_IP>
編輯:正如大衛迷宮正確指出的那樣。您應該知道 root 密碼將在image history. 這種方式也覆寫了原始容器行程。
這個流程,如果要采用的話,需要修改一下,以防生產使用需要。對于希望將 ssh 添加到其容器的人來說,這是一個起點。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/471214.html
標籤:码头工人 SSH 码头集装箱 IPv4 英伟达码头工人
上一篇:在docker中排除命令
下一篇:如何使用python執行調度?
