一、准备工作
1. pycharm 专业版 + Docker的Tensorflow镜像
- Pycharm社区版不支持SSH连接服务器
- Docker镜像安装:详见“M1 Docker:打造Tensorflow炼丹环境”
二、Docker容器内配置过程
主要参考了:https://www.jianshu.com/p/f6936cdf299d
过程略有不同
step1: 创建一个新容器
- 完成端口映射
- sftp默认22端口
docker run -tid --name tf2_ssh<容器名> -p 8022:22 -p 8887:8888 armswdev/tensorflow-arm-neoverse-n1:r21.10-tf-2.6.0-eigen<镜像名:版本> /usr/sbin/init
step2: 容器中安装ssh服务
sudo apt update
sudo apt install openssh-server
step3: 修改root密码
- 初始化的root密码是随机的,这里修改一下
sudo passwd
step4: 修改ssh配置
# 修改ssh配置
sudo vi /etc/ssh/sshd_config
# 主要修改以下部分
1. #注释 Subsystem sftp /usr/libexec/openssh/sftp-server
2. Subsystem sftp internal-sftp
3. PubkeyAuthentication yes #启用公钥私钥配对认证方式
4. AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
5. PermitRootLogin yes #root能使用ssh登录
step5: 重新启动ssh服务
sudo /etc/init.d/ssh restart
三、本地测试能否正常连接
step6: 本地检查22端口映射
docker port tf2_ssh 22
step7: 本地验证登陆
- 提示输入密码
ssh root@0.0.0.0 -p 8022
四、Pycharm SSH连接Docker容器
主要参考:https://www.jianshu.com/p/c27066e848c9
pycharm版本略有不同,过程有出入
step8: 选择python解释器
- 这里和【本地测试】环节的ip 、端口保持一致,Username选择root
- next
- 输入密码,next
step9:相关路径选择
- python解释器路径
- 这里默认的是/usr/bin/python,但容器中默认的不一定是这个,在容器中输入which python,确定路径为:
- 这里默认的是/usr/bin/python,但容器中默认的不一定是这个,在容器中输入which python,确定路径为:
- 本地目录映射到容器
- sync folders: 选择一下本地项目路径 -> 容器路径
- finish
step10: run一下试试
- 写个脚本run一下,仍然是官网代码
import tensorflow as tf
print(tf.__version__)
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)
- 如果遇到下面的报错:
- 在容器中下载:sudo apt-get install libopenblas-dev
- 刷新一下pycharm即可
ImportError: libopenblas.so.0: cannot open shared object file
- 中国人不骗中国人,代码运行结果: