M1 Docker:Pycharm SSH 连接Docker容器

一、准备工作

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 [email protected] -p 8022

M1 Docker:Pycharm SSH 连接Docker容器_第1张图片

四、Pycharm SSH连接Docker容器

主要参考:https://www.jianshu.com/p/c27066e848c9
pycharm版本略有不同,过程有出入

step8: 选择python解释器

  • 这里和【本地测试】环节的ip 、端口保持一致,Username选择root

M1 Docker:Pycharm SSH 连接Docker容器_第2张图片

  • next
  • 输入密码,next

M1 Docker:Pycharm SSH 连接Docker容器_第3张图片

step9:相关路径选择

  • python解释器路径
    • 这里默认的是/usr/bin/python,但容器中默认的不一定是这个,在容器中输入which python,确定路径为:
      在这里插入图片描述
  • 本地目录映射到容器
    • sync folders: 选择一下本地项目路径 -> 容器路径
  • finish

M1 Docker:Pycharm SSH 连接Docker容器_第4张图片

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
  • 中国人不骗中国人,代码运行结果:

你可能感兴趣的:(常用工具,ssh,pycharm,docker,tensorflow)