背景: 一部の実験はサーバー上で完了する必要があります。したがって、リモート サーバー上のコードをローカルで迅速かつ便利にデバッグするには、ローカル サーバーとリモート サーバーを直接接続する必要があります。ただし、この段階では多くのサーバーに Docker がインストールされており、通常、Docker でコードをデバッグする必要があります。そのため、この記事では主にリモート アクセス サーバー Docker の設定方法を説明します。 必要なツールと手順:
1. リモートサーバーDockerを構成する ステップ 1: サーバーを購入して構成する (既にサーバーをお持ちの場合はスキップしてください) ステップ 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 上記のコマンドを実行してコンテナをインスタンス化します。関連するパラメータは次のとおりです。
さらに、 -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 番目の手順を完了した後も、ブロガーはまだリモート接続できないため、問い合わせたところ、関連する構成ファイルを変更する必要があることがわかりました。 vim /etc/ssh/sshd_config vim がインストールされていない場合は、次を実行します。 apt をインストール 開いたら、ファイルを変更します。 vim エディタで、次のコマンドを実行して保存して終了します。
最後に、ssh サービスを再起動します。 サービスsshを再起動 詳細については文献[1]、[3]を参照してください。 3. SSHテスト 設定が完了すると、サーバーの設定は完了しているはずです。簡単なテストを行うことができます。たとえば、(1)ホストマシンでコマンドを実行して現在のポートを表示すると、ポート8848が使用可能であることがわかります。 sudo ネットスタット -ntlp (2)ホストマシン上でコマンドを実行して、現在のコンテナに対応するポートマッピング関係があるかどうかを確認することもできます。 sudo docker port [コンテナIDまたは自分の名前] 22 例えば、ブロガーが実行されると、成功を示す0.0.0.0:8848が返されます。 (3)コンテナに入り、以下を実行します。
Python環境に入り、実行する 輸入トーチ 印刷(torch.cuda.is_available()) True が返された場合、Docker は GPU を使用できることを意味します。 (4)リモートアクセスを試みます。接続されたマシン(LAN内にある場合はVPNに接続する必要があります)で次の操作を行います。
パスワードプロンプトが表示されたら、接続が成功したことを意味します。パスワードを入力すると、対応するコンテナーに直接入ることができます。たとえば、ブロガーは以下を実行します。 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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JavaScript配列の組み込みメソッドの詳細な説明
>>: Element における複数データ読み込み最適化の実装
開発環境では、vue プロジェクトは、ローカルで Express サーバーを構築することをベースにし...
目次1. はじめに2. 初期ビュー(I) Vueの概念を理解する(II) MVVMアーキテクチャ(I...
目次1. イメージをプルする2. Redisコンテナを作成する3. コンテナを起動するためにクラスタ...
1. flex-direction: (要素の配置方向) ※ flex-direction:row ...
Jsで作ったスライドボタンの具体的なコードは参考までに。具体的な内容は以下のとおりですまずエフェク...
目次アレイ重複排除1 2層forループ(バブルソートの2層ループ記述に類似) 2 ループとインデック...
序文前回の記事では、eコマース シナリオでのフラッシュ セールの例を通じて、モノリシック アーキテク...
ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...
Mixin は、再利用可能な機能を Vue コンポーネント間で分散する非常に柔軟な方法を提供します。...
LinuxでのMySQL5.7 rpmのインストール方法を参考までに記録します。具体的な内容は以下の...
序文パスワードを忘れることは、よく遭遇する問題です。MySQL または MariaDB データベース...
序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...
時刻、文字列、タイムスタンプ間の変換は、日常生活でよく使用されます。よく使用されますが、私は使用する...
良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...
Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...