***TensorRT 8.2.1.8 安装笔记(超全超详细)|Docker 快速搭建 TensorRT 环境 - 知乎
1:DOCKER 深度学习环境基本要素
1.Docker部署深度学习服务器,CUDA+cudnn+ssh_铜锣烧阿南Anan的博客-CSDN博客
1.1 Ubuntu18.04安装Nvidia-docker2报错:gpg: 找不到有效的 OpenPGP数据
Ubuntu18.04安装Nvidia-docker2报错:gpg: 找不到有效的 OpenPGP数据_anglemanyi的博客-CSDN博客
1.2 docker 和宿主机时区同步
只需要在/etc/profile末尾添加一行(再~/.bashrc中加入下面信息,可以下次自动更改)
export TZ='CST-8'
然后执行 source /etc/profile 使文件生效
即可成功更改
1.2.2
docker run -ti -d --name my-nginx -v /etc/localtime:/etc/localtime:ro docker.io/nginx /bin/bash
docker同步时区时间 - 清风软件测试 - 博客园
1.2.3 利用dockerfile直接封装镜像
FROM updatenc:v3
ENV TZ="CST-8"
RUN chmod +x /workspace/start_update.sh
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
WORKDIR /workspace
ENTRYPOINT /workspace/start_update.sh && tail -f /dev/null
1.4
# 方法1:直接在宿主机操作
docker cp /etc/localtime 【容器ID或者NAME】:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器ID或者NAME】:/etc/localtime
# 方法2:登录容器同步时区timezone
ln -sf /usr/share/zoneinfo/Asia/Singapore /etc/localtime
2:安装python
Docker下的ubuntu 安装python3.6 及pip3 - 简书
apt-get install python3.6
安装:apt-get install python3.6
查看所有连接: ls -l /usr/bin | grep python
删除现有连接:rm /usr/bin/python
建立新的连接:ln -s /usr/bin/python3.6 /usr/bin/python
3:安装pip
apt-get install python3-pip
建立连接:ln -s /usr/bin/pip3 /usr/bin/pip
******************************将容器固化成镜像然后部署到另一个服务器中************
将容器(CONTAINER)提交(固化)为镜像(IMAGE)
docker commit [CONTAINER ID] [IMAGE_NAME]:[TAG]
4:docker镜像制作、压缩及镜像加载
docker镜像制作、压缩及镜像加载_圣骑士控魔之手的技术博客_51CTO博客_docker镜像制作教程
***************************************************************************************************
5:docker 常用
查看已创建的容器命令
docker ps -a
进入容器命令
docker attach 容器名称/或容器id //通过docker ps -a 得到带对应容器的id号
拷贝文件进入docker容器命令
docker cp 文件本地路径 容器长ID:容器路径
(注意容器id后面是,么有空格带, 以下为将home路径下的aa.txt拷贝到容器id为49afc3a516e8的容器,下的new1目录下,为例):
sudo docker cp home/aa.txt 49afc3a516e8:new1/aa.txt
保存新带镜像命令
docker commit 49afc3a516e8 t3
其中:49afc3a516e8 为对应带容器名称
t3 为新带镜像的名称
镜像打包命令
save时要在宿主机上进行,不能ssh进行,否则回丢失系统信息。
docker save 镜像名 -o 保存的tar文件名称.tar
例如:
docker save hello -o hello.tar
加载打包的镜像文件命令
docker load < hello.tar
或者
docker load --input hello.tar
解决docker加载新的镜像后repository和tag名称都为none
可以使用命令:docker tag [image id] [name]:[版本]
例如:docker tag f2a91732366c ubuntu:14.04
查看GPU驱动是否正常
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
接下来是通过镜像建立容器,采用如下命令
sudo docker run -it --name test --gpus all -p 1234:22 nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04
-it 以交互模型运行容器,也就是运行容器后不退出
--name test 将容器命名为test,否则会随机命名
--gpus all 允许使用所有的gpu,这个非常重要,没有这个参数gpu无法正常使用
-p 1234:22 将宿主机的1234端口映射到容器的22端口,为了ssh链接做准备
nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04 镜像名:版本号
Docker Desktop 中使用GPU_chenxizhan1995的博客-CSDN博客_docker gpu透传
6: docker 自启动脚本
方法1 6.1 编写dockfiler docker容器启动自动启动shell脚本 - 简书
方法2 6.2 利用启动shell进行
1: 写好脚本start.sh
2: chmod +x start.sh
3:将容器固化镜像,然后利用如下命令建立容器
4:sudo docker run -it --name detect114 --gpus all -p 1234:22 detect:v3 /bin/bash -c 'sh /workspace/start.sh'
可以利用 docker attach id (这个进入,如果退出则容器停止)
docker exec -it id /bin/bash(这个退出,容器不退出)
6.3 tail -f /dev/null命令防止container启动后退出
6.3.1 利用tail -f /dev/null命令防止container启动后退出 - cloudolt - 博客园
6.3.2 修改已创建的docker容器的--restart=always参数_极客on之路的博客-CSDN博客
7:删除容器
方法一:
#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,
sudo docker ps -a|grep Exited|awk '{print $1}'
#查询所有的容器,过滤出Exited状态的容器,列出容器ID,删除这些容器
sudo docker rm `docker ps -a|grep Exited|awk '{print $1}'`
方法二:
#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)
sudo docker rm $(sudo docker ps -a -q)
方法三:
#根据容器的状态,删除Exited状态的容器
sudo docker rm $(sudo docker ps -qf status=exited)
方法四:
#Docker 1.13版本以后,可以使用 docker containers prune 命令,删除孤立的容器。
sudo docker container prune
#删除所有镜像
sudo docker rmi $(docker images -q)
Docker和宿主机之间共享文件
其实只需要一条命令,就能实现Docker和宿主机之间共享文件。
启动Docker镜像的命令一般如下:
docker run -it microsoft/dotnet:latest /bin/bash
1
其中-it后面的参数就是你docker镜像的名称。
现在只需要加一个-v参数即可。
docker run -it -v /home/haha/下载:/share microsoft/dotnet:latest /bin/bash
1
上面命令表示:
把宿主机的/home/haha/下载目录挂载到microsoft/dotnet:latest容器的/share目录下。
执行完上面命令进入Docker容器后,进入/share文件夹下,ls后就会看到原来宿主机下目录“/home/haha/下载”的文件。