DOCKER UBUNTU 配置

***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 和宿主机时区同步

1.2.1 将显示时间由UTC更改为CST的方法

只需要在/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/下载”的文件。
 

你可能感兴趣的:(深度学习配置,DOCKER,docker,ubuntu,容器)