GPU服务器使用docker进行用户隔离

研发需求

研发组内各人共用一台服务器,但是均需要root权限
下面记录一台ubuntu机器从初始化到最终提供上述服务的关键步骤

挂载硬盘

参考:

https://www.cnblogs.com/mumuzifeng/p/13963043.html

安装docker

参考:

https://www.runoob.com/docker/ubuntu-docker-install.html

安装nvidia docker

参考:

https://zhuanlan.zhihu.com/p/88351963?from_voters_page=true

迁移docker

参考:

https://blog.csdn.net/u011420410/article/details/99845765

测试yolov5

报错:

ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory解决方法

解决:

apt-get update
apt-get install libglib2.0-dev
apt-get install libsm6
apt-get install git

报错:

ERROR: Unexpected bus error encountered in worker. This might be caused by insufficient shared memory (shm).

参考:

https://felaim.blog.csdn.net/article/details/109318772?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-109318772-blog-101209718-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-109318772-blog-101209718-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_paycolumn_v3&utm_relevant_index=1

build镜像

FROM pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel
RUN apt update && apt install -y openssh-server
RUN echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
RUN echo "root:123" | chpasswd
RUN apt-get install -y vim
ADD init.sh /etc/profile.d/init.sh
ENTRYPOINT service ssh restart && bash

其中init.sh:

export PATH=/opt/conda/bin:$PATH

这里有个几个个细节:

  1. docker exec 进入容器和ssh进入容器都是root账号,echo $PATH 得到的内容却不一样,不知道是为何
  2. 无法通过systemctl启动ssh 只能写在ENTRYPOINT里,不知为何无法安装和使用systemctl
  3. 通过 ENV PATH=/opt/conda/bin:$PATH 修改容器内PATH无效,不知为何

添加账号并运行对应容器

TMPNAME=name1
TMPPORT1=20001
TMPPORT2=20002
docker run -idt --privileged=true --ipc=host --gpus all --name $TMPNAME -v /home/$TMPNAME:/root -p $TMPPORT1:22 -p $TMPPORT2:$TMPPORT2 pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel-ssh

登录指令:

ssh root@host -p 20001
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 服务器使用 Docker 是一种常见的方式来部署和管理应用程序。Docker 是一个开源的容器化平台,可以将应用程序及其所有依赖项打包到一个独立的、可移植的容器中。以下是使用 Docker 的一般步骤: 1. 安装 Docker:在 Linux 服务器上安装 Docker,你可以根据你的系统选择相应的安装方法。一般来说,你可以通过在终端运行适当的命令或者按照官方文档提供的指南来进行安装。 2. 编写 Dockerfile:Dockerfile 是一个文本文件,用于定义 Docker 镜像的构建过程。你可以在 Dockerfile 中指定基础镜像、安装软件包、复制文件等操作,以创建一个包含你的应用程序及其依赖项的镜像。 3. 构建镜像:使用 Dockerfile 构建镜像,你可以通过运行命令 `docker build -t <image_name> .` 来构建镜像。在这个命令中,`-t` 参数用于指定镜像的名称,`.` 表示使用当前目录中的 Dockerfile。 4. 运行容器:一旦你的镜像构建完成,你可以使用 `docker run` 命令来启动一个容器。你可以通过指定端口映射、环境变量设置等选项来配置容器的运行环境。 5. 管理容器:你可以使用 `docker ps` 命令来查看正在运行的容器,使用 `docker stop` 命令来停止容器的运行。还可以使用其他 Docker 命令来管理容器的生命周期。 通过使用 Docker,你可以更加方便地部署和管理应用程序,实现环境的一致性,并提高应用程序的可移植性和可扩展性。当然,这只是 Docker 的基本使用方法,还有很多高级功能和技巧可以进一步探索和利用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值