目的:基于内网服务器,搭建深度学习开发调试环境,解放本地主机,让打工人能再打一份工
内网环境说明:x86_64、CentOS7、Docker19.03、无显卡、2颗至强CPU、256G内存、8T存储
外网个人主机:虚拟机跑Ubuntu20.04、Docker19.05、RTX2060、i7、16G、512G
目标:搭建Python3.8+Tensorflow2.6.0-cpu+PyTorch1.12-cpu+optuna+mlflow+streamlit离线环境
正片开始:
0、外网个人机器虚拟机环境设置,Docker的安装过程和设置国内镜像源就不说了
1、首先使用Dockerfile来生成含python3.8的镜像,创建Dockerfile文件并写入如下内容(安装ssh的部分可以不写到Dockfile中去,后面会单独安装):
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3.8 python3-pip
RUN pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple/
RUN pip3 install numpy
RUN apt-get install -y openssh-server openssh-client && \
echo root:123123 | chpasswd && \
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
WORKDIR /app
CMD ["python3"]
2、然后执行命令:sudo docker build -t py3.8-img .
3、创建并启动容器,创建容器命令:
sudo docker run -it --name centos-py38 \
-p 8888:22 \
-p 8501:8501 \
-p 9999:9999 \
-v /home/xxx/python-packages:/usr/local/lib/python3.8/dist-packages \
-v /home/xxx/python-projects:/app \
py3.8-img:latest
其中,22端口是开给SSH的,8501端口是开给streamlit的,9999端口是开给mlflow的。
4、进入到容器内部,通过命令(sudo docker exec -it 容器id /bin/bash)后,修改root账号的密码
passwd
123123
123123
输入passwd命令,然后设置密码为123123
5、安装ssh服务:(下面的操作都是在容器内部哦)
apt-get -y update
apt-get install vim
apt-get install openssh-server
apt-get install openssh-client
vim /etc/ssh/sshd_config
PermitRootLogin yes # 在最后添加,允许root用户使用ssh登录
/etc/init.d/ssh restart # 重启(注意:如果是在Dockerfile文件里面就安装ssh的话,这一步还是要手
# 动执行的哦!)
6、退出容器并检查是否成功
ssh root@127.0.0.1 -p 8888 # 这里的root是指容器内部的root账号,并不是ubuntu或centos的管理员哦
7、进入容器,安装Python的各种库
# 安装常用库
pip install numpy pandas matplotlib seaborn scienceplots ...
# 安装streamlit/mlflow
pip install streamlit==1.23.1
pip install mlflow==1.30.1
pip install optuna==3.1.0
# 安装深度学习库
pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.6.0-cp38-cp38-manylinux2010_x86_64.whl
pip install torch==1.12.1+cpu torchvision==0.13.1+cpu torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cpu
8、此时需要注意,由于tensorflow和streamlit默认安装的依赖库存在版本冲突,需要重新手动安装指定版本
pip install numpy==1.21
pip install protobuf==3.20
pip install typing-extension==4.5.0
pip install keras==2.6
=========================================================================
下面是将外网主机上的容器打包导入到内网服务器上的过程:
1、docker容器打包成新的镜像
docker commit 容器id py38-new:latest
2、docker镜像导出到指定目录,最后需要修改下tar包的权限(chmod 777)才能被Xftp导出虚拟机
docker save -o /home/user/docker_exports/py38-new.tar py38-new:latest
3、将生成的镜像压缩包导入到内网环境下,并使用如下命令加载镜像
docker load -i py38-new.tar
4、创建容器,进入容器内部重启SSH,这样PyCharm就能连上了
/etc/init.d/ssh restart
5、打开PyCharm并测试连接,在python求解器选择界面中,ip写远程服务器地址(如我这是192.168.79.130),账号写容器的账号(这里是root), 端口写8888,然后求解器路径为/usr/bin/python3
6、若想调试的话,需要把本地的工程同步到远程服务器上去才行!!
3万+

被折叠的 条评论
为什么被折叠?



