dockerfile 说白了就是 生成镜像的文档。可以通过执行dockerfile很快速的生成镜像
文章目录
零、前言
主要是以下几个步骤:
- 安装NVIDIA Container Toolkit。这个工具是nvidia官方提供,可以给docker提供一些接口,总之要在docker中使用GPU需要先装好这个工具;
- 执行dockerfile拉镜像以及封装
- 通过镜像启动docker
一、安装docker
$ sudo apt install docker.io
$ sudo systemctl start docker
参考:https://learnku.com/docs/ubuntustudy/getting-started-with-docker-section-2-installing-docker-in-ubuntu1804/8853
二、执行dockerfile
2.1 dockerfile书写示例
# 基础镜像i
FROM nvidia/cuda:11.4.1-cudnn8-runtime-ubuntu18.04
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys XXXXXXX
# 安装所需的依赖和工具
RUN apt-get update
RUN apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y ppa:deadsnakes/ppa && \
apt-get update && \
apt-get install -y python3.7 python3.7-dev python3-pip && \
apt-get install -y python3-distutils python3-setuptools && \
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 && \
update-alternatives --set python3 /usr/bin/python3.7 && \
ln -s /usr/bin/pip3 /usr/bin/pip
RUN apt-get install -y wget vim openssh-server git libgl1-mesa-glx iputils-ping
RUN rm -rf /var/lib/apt/lists/*
# 设置工作目录
WORKDIR /workspace
# 安装Python依赖包
COPY ./requirements.txt requirements.txt
RUN pip3 install --upgrade pip
RUN pip3 --no-cache-dir install -r requirements.txt
# 暴露端口
EXPOSE 8080
# 启动应用
CMD ["python3"]
注意:
- 镜像名可以从这里获取:https://hub.docker.com/layers/nvidia/cuda/11.4.1-cudnn8-runtime-ubuntu18.04/images/sha256-258bc949d52cd6c4db94084e5180d1f0589ebfbea651c74486eaa06c2dcbf765?context=explore 或者 https://hub.docker.com/r/nvidia/cuda/tags
- 拉取镜像速度过慢,可以参考此链接修改镜像源:也可以看附录2。https://blog.csdn.net/wuqingshan2010/article/details/111662824
- 路径显示不存在:Dockerfile一般都是放在根目录下,COPY的文件使用相对路径
- 解决The following signatures couldn’t be verified because the public key is not available问题:
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 你的key
2.2 dockerfile执行命令
docker build -t 镜像名称 -f /path/to/Dockerfile .
其中,-t 参数指定构建的镜像名称,-f 参数指定使用的 Dockerfile 文件,. 表示使用当前目录作为构建上下文。
三、通过镜像启动docker
3.1 创建docker
- 常用命令
docker run --gpus all -it -p 8930(主机端口):2892(容器端口) --name 容器名称 -v 主机目录:容器目录 镜像名:版本 /bin/bash
详细说明:https://blog.csdn.net/zhong_jay/article/details/108668246
- 快速启动镜像
docker run --rm -it --gpus all 镜像名:版本 bash
注意:
Q:docker内起服务,docker外访问不到服务的问题
A:
第一步:在启动docker的时候设置暴露ip,如
docker run --gpus all -it -p ip(外部访问的地址):5000(主机端口):5000(容器端口) --name 容器名称 -v 主机目录:容器目录 镜像名:版本 /bin/bash
第二步:发送请求代码中app.run(ip='0.0.0.0', port=8000)
3.2 启动docker
- 启动docker
docker start 容器id
注意:其中容器id通过docker ps
查询
- 进入docker
docker exec -it 容器id /bin/bash
- 关闭docker
docker stop 容器id
- 删除docker
docker rm 容器id
四、对镜像的一些操作
4.1 保存镜像
docker commit -m="描述信息" -a="作者" 容器id 目标镜像名: [TAG]
例如:
docker commit -a “xxx” -m “xxx” 容器名称或id 打包的镜像名称:标签
4.2 删除镜像
docer rmi 镜像名
4.3 打包镜像
docker save -o /root/xxx.tar <name>
4.4 导入镜像
docker load -i /root/xxx.tar
五、对docker的一些操作
4.3 打包docker
docker export -o /root/xx.tar <name>
4.4 导入docker
docker import xx.tar <name>:latest
附录:小知识&问题记录
1. 如何查看ubuntu上cuda和cudnn的版本
要查看 Ubuntu 上的 CUDA 和 cuDNN 版本,可以按照以下步骤进行:
- 查看 CUDA 版本
可以使用以下命令来查看 CUDA 的版本:
cat /usr/local/cuda/version.txt
该命令将显示 CUDA Toolkit 的版本号。
也可以用nvidia-smi
查看。
- 查看 cuDNN 版本
可以使用以下命令来查看 cuDNN 的版本:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
新版本:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
该命令将显示 cuDNN 的版本号和其他相关信息。
如果你的 CUDA 和 cuDNN 都安装在不同的路径中,那么请相应地更改上述命令中的路径。希望以上信息可以帮助你。
2. 如果docker拉取镜像太慢,则更改源
更改源方式
sudo gedit /etc/docker/daemon.json
在文件末尾添加如下内容:
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"registry-mirrors" : ["https://pee6w651.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
参考链接:
https://cloud.tencent.com/developer/article/1924792
https://blog.csdn.net/wuqingshan2010/article/details/111662824
https://cloud.tencent.com/developer/article/1751221