文章目录
一些网站
-
Docker 命令查询网站:https://docs.docker.com/engine/reference/commandline/run/
-
Docker 镜像下载网站:https://hub.docker.com/
-
阿里云的镜像容器服务:镜像加速 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
参考:https://www.runoob.com/docker/docker-mirror-acceleration.html
Docker 备忘
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6qtgv43f.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker run -it --name train_mnist \
-v /etc/timezone:/etc/timezone \
-v /etc/localtime:/etc/localtime \
-v /home/clay/WorkSpace/_share:/home/workspace/_share \
--gpus all nvidia/cuda:11.1-base
#1 Miniconda安装,安装路径:/home/workspace/miniconda3
cd /home/workspace/_share
./Miniconda3-latest-Linux-x86_64.sh
#2 重启docker
exit
sudo docker ps -a //查看docker ID前两位,此处假如是dd
sudo docker start dd && sudo docker attach dd
## 3 换源
cd /home/workspace/_share
python oh-my-tuna.py
好像docker中只能换conda的源,所以需要手动换ubuntu的源,详细参考:https://blog.csdn.net/ReCclay/article/details/124807818
如果pip conda的源也未替换成功,可以参考这篇文章替换:https://blog.csdn.net/ReCclay/article/details/114027851
#4 更新
apt update
update 错误记录:(开放了GPU的错误)
(base) root@ddd3e6a8a30e:/home/workspace/_share## apt update
Hit:3 http://security.ubuntu.com/ubuntu focal-security InRelease
Hit:4 http://archive.ubuntu.com/ubuntu focal InRelease
Ign:2 https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu2004/x86_64 InRelease
Get:1 https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64 InRelease [1581 B]
Err:1 https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64 InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC
Hit:5 https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu2004/x86_64 Release
Hit:7 http://archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:8 http://archive.ubuntu.com/ubuntu focal-backports InRelease
Reading package lists... Done
W: GPG error: https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu2004/x86_64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC
E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64 InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
#5 安装基础编译环境
apt install build-essential
Docker 安装
Docker 的旧版本被称为 docker,docker.io 或 docker-engine。当前称为 Docker Engine-Community 软件包 docker-ce 。安装教程参考:
Docker也是虚拟化环境的神器,前面说的conda虽然可以提供python的虚拟环境并方便地切换,但是有的时候我们的开发环境并不只是用到python,比如有的native库需要对应gcc版本的编译环境,或者进行交叉编译时哟啊安装很多工具链等等。如果这些操作都在服务器本地上进行,那时间久了就会让服务器的文件系统非常杂乱,而且还会遇到各种软件版本冲突问题。
Docker就可以很好地解决这些问题,它其实可以理解为就是一个非常轻量化的虚拟机,我们可以在宿主服务器上新建很多个这种被称为容器的虚拟机,然后在里面配置我们的开发环境,且这些配置好的环境是可以打包成镜像的,方便随时做分享和重用;不需要的时候,我们直接删除容器就好了,其资源是和我们的服务器宿主机完全隔离的。
Docker的具体使用可以自己搜索一下很多教程,这里主要介绍如何把GPU暴露给Docker的容器(因为大家都知道像是VMware这种虚拟机里面都是无法共享宿主机的GPU的),是通过nvidia-docker实现的。
以前为了配置nvidia-docker,需要安装完docker之后再安装单独的nvidia docker2,而现在只需要安装nvidia container toolkit即可,更加方便了。
- docker安装 官网上有详细的介绍:Install Docker Engine on Ubuntudocs.docker.com 或者运行下面的命令安装:
sudo apt-get update
sudo apt-get install docker.io
systemctl start docker
systemctl enable docker
可以运行这条命令检查是否安装成功:
docker version
- 安装NVIDIA Container Toolkit
官网安装步骤:NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs (github.com) 或者直接运行下面的命令:
##首先要确保已经安装了nvidia driver
## 2. 添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
## 2. 安装并重启
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
安装完成后可以新建一个容器测试一下:
sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:11.1-base
其中最后的参数nvidia/cuda:11.1-base 是Nvidia官方的镜像,需要根据工作站主机中实际安装的cuda版本进行修改,版本可以用nvcc -V查看。
进入容器之后可以跑一下nvidia-smi命令看看:
现在可以在docker里面正常使用GPU啦~
Docker 基本命令使用
1,创建并启动容器
启动普通容器: docker run --name 别名 镜像ID(取ID前两个数就行)
启动交互式容器:docker run -it --name 别名 镜像ID
来运行一个容器,取别名,交互模式运行,以及分配一个伪终端
–name=“容器新名字”:为容器指定一个名称;
-i:以交互模式运行容器,通常与-t或者-d同时使用;(-d:后台运行容器)
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
从容器中出来:exit
2,列出容器
命令:docker ps [OPTIONS]
OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
–format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
–no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
我们这里先启动之前的容器,再来列出正在运行的容器:
docker ps 查看正在运行的容器
docker ps -a 查看所有容器
docker ps -n 2 显示最近创建的2个容器
docker ps -f status=exited 查看停止的容器
docker ps -a查看所有容器:
docker ps -n 2显示最近创建的2个容器:
docker ps -f status=exited 查看停止的容器
3,退出容器
exit 容器停止退出
ctrl+P+Q 容器不停止退出
我们来检验一下:
4,进入容器
比方说上面的我们已经退出容器,但是它依旧在运行,所以说我们又怎么样重新进去呢?
命令:docker attach 容器ID or 容器名
注意: attach命令,如果从这个容器退出,会导致容器的停止
除了上述命令可以进入容器,还有一个命令也可以进入容器:
docker exec
推荐使用 docker exec 命令,因为此命令会退出容器终端,但不会导致容器的停止。
5,启动容器
当容器停止了,我们也可以启动容器;
命令:docker start 容器ID or 容器名
我们再来看看容器的启动状态:
6,重启容器
命令:docker restart 容器ID or 容器名
7,停止容器
命令:docker stop 容器ID or 容器名
暴力删除,直接杀掉进程 (不推荐)
命令:docker kill 容器ID or 容器名
8,删除容器
命令: docker rm 容器ID
我们先来看看容器运行情况:
此时我们删掉mycentos1的话试试看:
如果删除正在运行的容器,会报错,我们假如需要删除的话,需要强制删除;
强制删除:docker rm -f 容器ID
Docker 镜像使用
1,列出镜像
docker images
docker images 各个参数选项说明:
- REPOSITORY:表示镜像的仓库源
- TAG:镜像的标签
- IMAGE ID:镜像ID
- CREATED:镜像创建时间
- SIZE:镜像大小
2,获取镜像
docker pull xxx:版本号
获取相应版本号的xxx镜像,版本号可选
3,查找镜像
可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像:
docker search xxx
docker search 各个参数选项说明:
- NAME: 镜像仓库源的名称
- DESCRIPTION: 镜像的描述
- OFFICIAL: 是否 docker 官方发布
- stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。
- AUTOMATED: 自动构建。
4,删除镜像
删除镜像前记得需要先删除使用该镜像的容器!
docker rmi xxx
docker 存储位置更改
windows
Linux
{
"registry-mirrors": ["https://6qtgv43f.mirror.aliyuncs.com"],
"data-root": "/home/clay/software/docker"
}
参考
-
设置WSL:https://docs.microsoft.com/zh-cn/windows/wsl/setup/environment
-
docker基本使用:
-
docker 中cuda相关