ubuntu docker配置cuda+anaconda+vscode+tensorflow环境的镜像

docker 安装

下载docker Install Docker Engine on Ubuntu
https://docs.docker.com/engine/install/ubuntu/

dockerfile 用法

dockerfile 换源 https://zhuanlan.zhihu.com/p/121660487

docker 中文文档
https://yeasy.gitbook.io/docker_practice/

Docker部署Anaconda+Tensorflow深度学习环境(包括CUDA和cudnn
https://zhuanlan.zhihu.com/p/281112065)

docker基本操作

查看镜像

列出本地主机上的镜像

sudo  docker images
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

删除镜像

docker rmi hello-world

删除none的镜像,要先删除镜像中的容器。要删除镜像中的容器,必须先停止容器。

$ docker images

$ docker rmi $(docker images | grep "none" | awk '{print $3}')
直接删除带none的镜像,直接报错了。提示先停止容器。

$ docker stop $(docker ps -a | grep "Exited" | awk '{print $1 }') //停止容器

$ docker rm $(docker ps -a | grep "Exited" | awk '{print $1 }') //删除容器

$ docker rmi $(docker images | grep "none" | awk '{print $3}') //删除镜像 

然后,进行免秘钥配置:

sudo addgroup --system docker
sudo adduser $USER docker
newgrp docker

官方镜像

tensorflow镜像https://tensorflow.google.cn/install/docker?hl=zh_cn

docker pull tensorflow/tensorflow:latest-gpu-jupyter 
docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu-jupyter
sudo docker run -it tensorflow/tensorflow:latest-gpu-jupyter bash
sudo docker run -it --name=zhl tensorflow/tensorflow:latest-gpu-jupyter  bash

https://hub.docker.com/r/nvidia/cuda/

容器基本操作

Container的安装与使用 - 郝先森的文章 - 知乎
https://zhuanlan.zhihu.com/p/483416326

从镜像启动容器

所需要的命令主要为 docker run。

sudo docker run -t -i ubuntu:18.04 /bin/bash 
docker run ubuntu:18.04 /bin/echo 'Hello world'

-p 80:5000 本地端口:容器端口
-d 后台运行
-v 挂载
-t 选项让Docker分配一个伪终端并绑定到容器的标准输入上
-i 则让容器的标准输入保持打开。

当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:

  1. 检查本地是否存在指定的镜像,不存在就从
  2. 利用镜像创建并启动一个容器
  3. 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  4. 从地址池配置一个 ip 地址给容器
  5. 执行用户指定的应用程序
  6. 执行完毕后容器被终止

列出所有容器

sudo docker ps --all
#列出所有容器 包括终止的
sudo docker container ls 
#列出所有容器 不包括终止的 -a 包括终止的

终止容器

docker container stop [name]
docker container restart [name]

启动容器

docker container ls -a #先看看所有的容器
docker start [容器id]
docker container start zhl
docker exec -it 74e4 bash

删除容器

docker container rm container_name
docker container prune #清理所有处于终止状态的容器

容器保存为镜像

我们可以通过以下命令将容器保存为镜像

docker commit pinyougou_nginx mynginx

pinyougou_nginx是容器名称
mynginx是新的镜像名称

nvidia-container-toolkit

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/overview.html#installation-guide

nvidia-docker2

    https://github.com/NVIDIA/nvidia-docker/tree/gh-pages/

nvidia-container-toolkit

    https://github.com/NVIDIA/nvidia-container-runtime/tree/gh-pages/

libnvidia-container

    https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/

lambda stack

https://blog.csdn.net/zdx1996/article/details/88774674
https://github.com/lambdal/lambda-stack-dockerfiles
一次性安装TensorFlow,Keras,Caffe,Caffe,CUDA,cuDNN和NVIDIA驱动程序

容器配置环境

sudo docker run -it --gpu  --name=zhl -p  8001:22  -p  8002:6000  -p  8003:6006  -v /data/zhl_docker:/data  nvidia/cuda:11.1.1-cudnn8-devel-ubuntu20.04

sudo docker run --gpus all -it   --name=zhl -p  8001:22  -p  8002:6000  -p  8003:6006  -v /data/zhl_docker:/data  lambda-stack:18.04 bash

sudo docker run --gpus 2 lambda-stack:18.04 python3 -c "import torch; print(torch.cuda.device_count())"

建立了一个nvidia/cuda:11.1.1-cudnn8-devel-ubuntu20.04 镜像的容器, 将 本地端口:容器端口 映射,容器name = zhl, 容器路径/data 挂载在 本地路径 /data/zhl_docker 上 。之后对容器进行操作。

文件传输

方法一 通过挂载路径,将文件放在本地路径 /data/zhl_docker

方法二 拷贝

docker cp 服务器文件路径 容器名:容器路径

1换源

Docker容器内更新apt-get 国内加速

sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
apt-get update

3、更新apt-get
apt-get update

4、下载yum工具
apt-get install yum

开启ssh服务

apt-get install openssh-server  #安装openssh-server
ps -e | grep ssh #查看ssh服务是否启动
service ssh start # 启动ssh服务

apt install net-tools #安装网络服务
ifconfig 
# 172.17.0.2

vim /etc/ssh/sshd_config 
Port 8080
PermitRootLogin yes
/etc/init.d/ssh restart
passwd   #修改密码


sudo ssh [email protected] -p 8080

安装anaconda

参考文件传输本地下载 官网下载sh文件放在映射目录中
安装教程 https://zhuanlan.zhihu.com/p/426655323


bash Anaconda3-2021.05-Linux-x86_64.sh
#conda init 选yes
source ~/.bashrc

用主机vscode连接容器

下载插件 Remote - Containers
在 VS Code 中使用容器开发 教程

到此为之,通用的docker 容器cuda+anaconda+vscode+tensorflow 配置教程完毕。

猜你喜欢

转载自blog.csdn.net/qq_43488795/article/details/124390637