配置tensorflow2.8可供远程连接的docker容器
- 1. 从docker hub上下载官方镜像
- 2. 运行镜像
- 3. 进入docker容器内部
- 4. 提交为新的镜像
- 5. 启动容器并用PyCharm连接远程开发环境
- 6. 几种docker启动的方法
- 7. 验证tensorflow2.8是否可执行
1. 从docker hub上下载官方镜像
docker hub网站
docker pull tensorflow/tensorflow:2.8.0-gpu-jupyter
#或者
docker pull tensorflow/tensorflow:2.8.0
2. 运行镜像
- 添加-it 参数交互运行
- 添加-d参数后台运行
docker run -dit --rm tensorflow/tensorflow:2.8.0-gpu-jupyter bash
#或者
docker run -dit --rm tensorflow/tensorflow:2.8.0 bash
3. 进入docker容器内部
比如CONTAINER ID为:c96d56145259
docker exec -it c96d56145259 bash
3.1 查看Ubuntu系统版本
cat /etc/issue
3.2 给Ubuntu设置国内源
设置apt-get国内源是为了加快下载速度,访问镜像站页面,选择对应版本制作new_sources.list文件。
将new_sources.list文件粘贴于容器 /etc/apt/sources.list.d
目录内。在Ubuntu下软件源的文件是/etc/apt/sources.list,而sourdces.list.d目录下的文件是第三方软件的源,可以分别存放不同的第三源地址,只需“扩展名”为list即可。
docker cp new_sources.list c96d56145259:/etc/apt/sources.list.d/new_sources.list
3.3 给Ubuntu安装ssh服务
若下载的镜像内没有ssh,则pycharm远程连接访问不了(容器内没有22端口),需要给镜像配置ssh服务。
#安装ssh
apt-get update
apt-get install openssh-server
#查看ssh服务状态
service ssh status
#查看ssh版本
ssh -V
配置ssh服务的登陆密码,此处设置密码为123456
,默认用户名为root
# 终端输入以下命令
passwd
# New password: 输入密码123456
# Retype new password:再次输入密码123456
# passwd: password updated successfully 表示密码设置成功
修改容器内ssh的配置文件/etc/ssh/sshd_config(注意,不是ssh_config)
# 修改如下两个地方
PermitRootLogin yes
UsePAM no
启动ssh服务
service ssh restart
3.4 给Ubuntu安装vim编辑器
apt-get update
apt-get install vim
3.5 使用pip安装OpenCV
- opencv-python: 只包含opencv库的主要模块,一般不推荐安装。
- opencv-contrib-python: 包含主要模块和contrib模块,功能基本完整,推荐安装。
pip3 install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple
验证是否可用。如果成功导入opencv包并打印相应opencv的版本就说明安装成功了。
import cv2
print(cv2.version)
如果报如下错误,其实就是新容器缺少依赖,安装一下就行了。
apt-get update
apt-get install libgl1-mesa-glx
3.6 使用pip安装jieba
中文分词
pip3 install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
3.7 使用pip安装nltk
外文分词
pip3 install nltk -i https://pypi.tuna.tsinghua.edu.cn/simple
4. 提交为新的镜像
比如CONTAINER ID为:c96d56145259
docker commit -a "dpc" -m "tensorflow2.8_add_ssh, passwd=123456" c96d56145259 dpc_tensorflow2.8_env:001
5. 启动容器并用PyCharm连接远程开发环境
docker run -dit --rm -p 5023:22 -v /home/tarena/hello/tf/ceshi:/tmp --name my_tf_env dpc_tensorflow_env:tensorflow2.8.0
5.1 启动容器
docker run -dit --rm -p 5023:22 --name my_tf_env dpc_tensorflow2.8_env:001
进入容器内,此时CONTAINER ID为:a048eb77fbaa
docker exec -it a048eb77fbaa bash
启动ssh服务
service ssh restart
5.2 PyCharm远程连接
启动容器后,用PyCharm专业版远程连接宿主机ip的5023端口。
成功啦!
6. 几种docker启动的方法
#在tensorflow容器中打开bash shell会话
docker run -it --rm tensorflow/tensorflow:2.8.0 bash
#启动tensorflow容器的Jupyter Notebook服务器
docker run -it --rm -p 8888:8888 tensorflow/tensorflow:2.8.0-gpu-jupyter
#在tensorflow容器中运行宿主机上开发的程序
docker run -it --rm -v /home/tarena/hello/tf/ceshi:/tmp -w /tmp tensorflow/tensorflow:2.8.0 python ./tf_practice_2.py
检查宿主机上GPU是否可用
lspci |grep -i nvidia
验证nvidia-docker效果
docker run --gpus all --rm nvidia/cuda nvidia-smi
-
备注:
- v2版本使用 --runtime=nvidia 替换 --gpus all
- v1版本使用 nvidia-docker 替换 --gpus all
运行tensorflow的GPU映像
docker run --gpus all --it --rm tensorflow/tensorflow:2.8.0-gpu-jupyter bash
7. 验证tensorflow2.8是否可执行
import tensorflow as tf
res=tf.reduce_sum(tf.random.normal([10,10]))
print(res)