Pycharmとsshリモートアクセスサーバーdockerの詳細なチュートリアル

Pycharmとsshリモートアクセスサーバーdockerの詳細なチュートリアル

背景: 一部の実験はサーバー上で完了する必要があります。したがって、リモート サーバー上のコードをローカルで迅速かつ便利にデバッグするには、ローカル サーバーとリモート サーバーを直接接続する必要があります。ただし、この段階では多くのサーバーに Docker がインストールされており、通常、Docker でコードをデバッグする必要があります。そのため、この記事では主にリモート アクセス サーバー Docker の設定方法を説明します。

必要なツールと手順:

  • リモートサーバー
  • Pycharm: ローカルにインストールされた統合開発ツール
  • ssh: リモート アクセス ツール。ローカル サーバーとリモート サーバーの両方が必要です。
  • Docker: リモートサーバー上のコンテナ

1. リモートサーバーDockerを構成する

ステップ 1: サーバーを購入して構成する (既にサーバーをお持ちの場合はスキップしてください)
CentOS サーバーは Alibaba Cloud や Tencent Cloud などのサーバープロバイダーから購入することも、企業や学校が提供するサーバーを利用することもできます。ただし、VPN 環境で企業や学校のサーバーにアクセスする必要がある場合は、サーバーにアクセスする前に事前に VPN に接続する必要があることに注意してください。

ステップ 2: Docker をインストールする (すでに Docker をお持ちの場合はスキップしてください)

sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

詳細については、記事末尾の参考文献[2]を参照してください。

注意: sudo コマンドは最高権限の root で実行されます。現在のアカウントが root の場合、sudo コマンドは必要ありません。

ステップ3: イメージを取得する

公式イメージ Web サイトは Docker Hub であり、ここでは本番環境のニーズを満たすイメージを見つけることができます。 pytorch を例にしてイメージを取得してみましょう。

sudo docker pull pytorch/pytorch

次のコマンドを使用して、関連ファイルをダウンロードし、プルされたイメージを表示できます。

sudo docker イメージ

詳細については、記事末尾の参考文献を参照してください[6]

ステップ4: コンテナを作成する

イメージを取得したら、そのイメージに基づいてコンテナをインスタンス化する必要があります。ここでは、run コマンドを使用してコンテナをインスタンス化します。

ssudo docker run -p [自分で選択したポート番号]:22 --gpus all -itd --name [自分で選択した名前] -v [ホスト(ローカル)ディレクトリ]:[作成されたコンテナ内のカスタマイズされたディレクトリ] /bin/bash

上記のコマンドを実行してコンテナをインスタンス化します。関連するパラメータは次のとおりです。

  • -p [オプションのポート番号]:22: コンテナを対応するポート番号にマップし、リッスン用にポート 22 に関連付けます。
  • –gpus all: ホストマシンに含まれるすべての GPU をインスタンス化されたコンテナで使用できるように指定します。
  • -i: STDIN を開いたままにします。
  • -t: 疑似端末を割り当てます。
  • -d: バックグラウンドで実行
  • –name [名前を付ける]: 長くて複雑なコンテナ ID を覚えなくて済むように、通常はコンテナに名前を設定できます。既存の名前と同じ名前を使用しないように注意してください。
  • -v [ホスト (ローカル) ディレクトリ]:[コンテナ内のカスタマイズされたディレクトリ]: コンテナ内のファイルをホストと同期させるには、このパラメータを使用します。コンテナ内のカスタム ディレクトリは絶対パスである必要があることに注意してください。

さらに、 -i-t-dは一緒に記述できます (例: -it-itd )
たとえば、次のコマンド:

sudo docker run -p 8848:22 --gpus all -itd --name wjn -v /home/gm/wangjianing/docker:/wjn pytorch/pytorch /bin/bash

インスタンス化されたイメージ pytorch/pytorch はコンテナであり、ホストポート番号 8848 を占有し、ssh ポート 22 に関連付けられたリスニングを維持していることを示します。すべての GPU を使用できます。名前は「wjn」です。ホストアドレス「/home/gm/wangjianing/docker」はコンテナ内のディレクトリ「/wjn」に関連付けられており、コマンドスクリプトとして /bin/bash を使用します。

作成後、インスタンス化されたコンテナをすべて表示できます。

sudo docker ps

ステップ5: ポートを開く

ポートがファイアウォールで保護されている場合は、自分で開く必要があります。

sudo /sbin/iptables -I 入力 -p tcp --dport 8848 -j 受け入れる

ステップ6: コンテナを起動する

コンテナを起動して実行状態にします。

sudo docker start [コンテナIDまたは自分の名前]

たとえば、作成したコンテナ番号が「5621fade441e」で、名前が「wjn」の場合、以下を実行できます。

sudo docker スタート 5621fade441e

または

sudo docker スタート wjn

起動後は、次の操作を実行できます。

sudo docker ps -a

図に示すように、開始され実行中のすべてのコンテナを表示します。

ここに画像の説明を挿入

注: この時点で、コンテナの関連情報を確認できるはずです。特に PORTS 属性に注意してください。ポート情報は、現在作成されているコンテナにポート経由でアクセスできるかどうかを判断するために必要です。この情報がないと、コンテナへのリモート アクセスを完了できません。現在、作成されたコンテナのポートを直接変更することはできないため、再作成することしかできません。

ステップ7: コンテナに入る

コンテナに入るには、次のコマンドを使用します。

sudo docker exec -it [コンテナIDまたは自分の名前] /bin/bash

2. コンテナ設定ssh

docker を作成したら、ssh 経由でコンテナに直接アクセスできると思っていましたが、後でコンテナに入り、一連の ssh 設定を実行する必要があることがわかりました。主な手順は次のとおりです。

ステップ8: sshをインストールします

新しく作成したコンテナに入り、次のコマンドを実行します。

適切なアップデート
apt をインストール -y openssh-server

次に、構成フォルダーを作成し、必要な構成を行います。

mkdir /var/run/sshd
'root:passwd' をエコーし​​ます | chpasswd

ここでの root は後でリモートでアクセスするユーザー名を示し、passwd はアクセス パスワードであり、自分で設定できます。たとえば、次のように設定します。

'root:123456' をエコー | chpasswd

ステップ9: ログイン権限を設定する:

権限を設定するには、次の3行のコマンドを実行します。

sed -i 's/PermitRootLogin 禁止パスワード/PermitRootLogin yes/' /etc/ssh/sshd_config
sed 's@session\srequired\spam_loginuid.so@session オプション pam_loginuid.so@g' -i /etc/pam.d/sshd
echo "export VISIBLE=now" >> /etc/profile

ステップ10: SSH設定ファイルを変更する

2 番目の手順を完了した後も、ブロガーはまだリモート接続できないため、問い合わせたところ、関連する構成ファイルを変更する必要があることがわかりました。
次のコマンドを実行して、ssh 構成ファイルを開きます。

vim /etc/ssh/sshd_config

vim がインストールされていない場合は、次を実行します。

apt をインストール

開いたら、ファイルを変更します。
AddressFamily 任意 前 # 削除 変更 PermitRootLogin はい 前 # 削除 変更 PasswordAuthentication はい 前 # 削除

vim エディタで、次のコマンドを実行して保存して終了します。

:wq

最後に、ssh サービスを再起動します。

サービスsshを再起動

詳細については文献[1]、[3]を参照してください。

3. SSHテスト

設定が完了すると、サーバーの設定は完了しているはずです。簡単なテストを行うことができます。たとえば、(1)ホストマシンでコマンドを実行して現在のポートを表示すると、ポート8848が使用可能であることがわかります。

sudo ネットスタット -ntlp 

ここに画像の説明を挿入

(2)ホストマシン上でコマンドを実行して、現在のコンテナに対応するポートマッピング関係があるかどうかを確認することもできます。

sudo docker port [コンテナIDまたは自分の名前] 22

例えば、ブロガーが実行されると、成功を示す0.0.0.0:8848が返されます。

(3)コンテナに入り、以下を実行します。

パイソン3

Python環境に入り、実行する

輸入トーチ
印刷(torch.cuda.is_available())

True が返された場合、Docker は GPU を使用できることを意味します。

(4)リモートアクセスを試みます。接続されたマシン(LAN内にある場合はVPNに接続する必要があります)で次の操作を行います。

ssh [手順8で作成したユーザー名]@[サーバーアドレス] -p [自分で定義したポート番号]

パスワードプロンプトが表示されたら、接続が成功したことを意味します。パスワードを入力すると、対応するコンテナーに直接入ることができます。たとえば、ブロガーは以下を実行します。

ssh ルート@10.11.6.13 -p 8848

接続が成功したことを示す次の情報が表示されます。

ここに画像の説明を挿入

4. Pycharmテスト

pycharm を使用してリモート サーバーの docker に直接アクセスする場合は、pycharm で関連する設定を行うことができます。

ステップ 11: pycharm をインストールする (すでにインストールされている場合はスキップしてください)

pycharmのプロフェッショナル版をインストールする必要があります。インストール後、アクティベーションコードを使用するか、公式ウェブサイトに直接アクセスして、学生のメールアドレスでアカウントを登録し、1年間無料で使用できます。インストール後、pycharmと入力します。

詳細については、記事末尾の参考文献を参照してください[7]

ステップ12: sshを設定する

以下に示すように、順番にクリックしてメニューに入ります。

ここに画像の説明を挿入

次に、新しい接続を追加し、左から右にクリックします。

ここに画像の説明を挿入

ssh 編集インターフェイスに入り、構成情報を入力します。

ここに画像の説明を挿入

「接続のテスト」をクリックしてテストします。成功した場合、pycharm もリモート コンテナーに接続できることを意味します。

ここに画像の説明を挿入

前のページに戻り、構成された ssh を選択してから、pycharm を関連付けるコンテナー内の特定のディレクトリを選択します。たとえば、ブロガーはコンテナを作成するときに、ドメイン ホストに関連付けられたディレクトリ /wjn を、pycharm が更新およびアップロードできる場所として直接選択し、保存します。

ここに画像の説明を挿入

この時点で、すべての構成作業が完了し、pycharmのサーバーdockerでプロジェクトを自由にデバッグできます。

参考文献:

[1] SSHクライアントのリモートログインLinuxサーバーのパスワードが常に間違っている [2] Dockerのインストール [3] PyCharm + Docker:最も快適なディープラーニング錬金術炉を作成する [4] コードを実行してデバッグするためのPycharmリモート接続サーバー [5] pytorch GPU計算中のメモリ不足の問題を解決する [6] Dockerイメージの使用 [7] 学生がPycharmプロフェッショナルバージョンのすべての機能を無料で使用できる方法

これで、pycharm と ssh によるサーバー Docker へのリモート アクセスに関する詳細なチュートリアルに関するこの記事は終了です。pycharm による Docker へのリモート アクセスに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker リモート アクセスの実装
  • Dockerでリモートアクセスを有効にする方法

<<:  JavaScript配列の組み込みメソッドの詳細な説明

>>:  Element における複数データ読み込み最適化の実装

推薦する

Vue プロジェクトをパッケージ化して Apache サーバーにデプロイする手順

開発環境では、vue プロジェクトは、ローカルで Express サーバーを構築することをベースにし...

Vue の詳細な入門ノート

目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...

Docker 上で Redis クラスターを構築する

目次1. イメージをプルする2. Redisコンテナを作成する3. コンテナを起動するためにクラスタ...

スライドボタン効果を実現するネイティブJS

Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりですまずエフェク...

Javascript配列の重複排除のいくつかの方法の詳細な説明

目次アレイ重複排除1 2層forループ(バブルソートの2層ループ記述に類似) 2 ループとインデック...

MySQLは実際に分散ロックを実装できる

序文前回の記事では、eコマース シナリオでのフラッシュ セールの例を通じて、モノリシック アーキテク...

MySQL バッチ追加および保存メソッドの例

ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...

Vue での mixin の応用について議論する

Mixin は、再利用可能な機能を Vue コンポーネント間で分散する非常に柔軟な方法を提供します。...

LinuxでRPMを使用してmysql5.7.17をインストールする

LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...

MySQL/MariaDB ルートパスワードリセットチュートリアル

序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...

MySQLリモートアクセスの設定方法をステップバイステップで説明します

序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...

MySQLの日付文字列タイムスタンプ変換の詳細な説明

時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...

jQuery をベースにリスト ループ スクロールを実装するためのヒント (超簡単)

良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...

Mac での MySQL と Squel Pro の設定

Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...