实现在Docker环境中开发宿主机工程代码

在用tensorflow不同版本的时候,会对cuda和cudnn有不同的需求,如果正对每个版本的tensorflow都要安装cuda和cudnn,那是一件特别麻烦的事情。很感谢tensorflow提供了不同版本的Docker镜像,只需要安装显卡驱动就可以了,不需要配置其他环境。安装步骤如下:

1.安装Docker

2.安装NVIDIA-docker-toolkit

# Add the package repositories
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

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

3.下载tensorflow镜像

docker pull tensorflow/tensorflow:latest-gpu

4.启动镜像

docker run --gpus all -it tensorflow/tensorflow:latest-gpu bash

那么如何将docker作为自己的开发环境呢?有两种方法:

1.将工程从宿主机复制到Docker镜像中:

docker ps可以看到当前正在运行到镜像,

docker cp 宿主机路径 镜像名称:镜像目录

image.png

这种方法有一个很严重的缺点,就是每次镜像推出之后,复制的文件就会丢失,而且配置的环境也会丢失,需要使用docer commit来保存镜像修改。

docker commit -m '******' -a 'XXXXXXX' 做了修改的镜像ID(root@之后的数字) 保存名称image.png还是比较繁琐的。

2.另一种方法比较简单,就是将宿主机的文件夹挂在到Docker中

docker run --gpus all -d -p 50001:22 -v /home/ianwong/Documents/IanWong/Study/MASTER-TF:/tmp/MASTER-TF 7217b6879872 /usr/sbin/sshd -D
#这个是包含了启动ssh服务的。将端口映射到50001。

当然,既然要在docker中开发,免不了是通过ssh链接启动的docker。这就需要涉及到Docker SSH配置了。如下:

在Docker 镜像中安装ssh服务,我按装的是ubuntu,ubuntu安装ssh如下:

1.sudo apt-get install openssh-server

2.

vi /etc/ssh/sshd_config

RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
PermitRootLogin yes #root能使用ssh登录 找到并用#注释掉这行:PermitRootLogin prohibit-password 新建一行 添加:PermitRootLogin yes

然后我就可以通过vscode remote去远程开发了。步骤就是先ssh到宿主机,然后启动docker,挂在文件夹。然后 在vscode上远程连接docker。开发即可,修改的代码会同步在宿主机中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值