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 における複数データ読み込み最適化の実装

推薦する

Windows 10 で MySQL を完全にアンインストールして再インストールするための詳細な手順

さまざまな理由で、誰もが MySQL を再インストールする必要があると思います。 MySQL と Q...

JSで実現したページサイドバーの効果に関する研究

目次発見: ディスプレイアニメーションの応用実装:記事の1行目を表示する効果を実現する方法実際、その...

JavaScript DOMContentLoaded イベントのケーススタディ

DOMContentLoaded イベント文字通り、DOM がロードされた後に実行されます。 win...

MySQL インストール図の概要

MySQL 5.5 のインストールと設定方法のグラフィックチュートリアルMySQL 5.5 のインス...

Mysql は、デッドロック問題を解決するために kill コマンドを使用します (実行中の特定の SQL ステートメントを強制終了します)。

MySQL を使用して特定のステートメントを実行すると、データ量が多いためにデッドロックが発生し、...

文字列の GBK および GB2312 エンコードとデコードのフロントエンド実装 (概要)

序文プロジェクトを開発しているときに、かなり厄介な問題に遭遇しました。この製品では、判断のためにブラ...

ブラウザのスクロールバーのスタイルを変更するための純粋な CSS の例

CSSを使用してブラウザのスクロールバーのスタイルを変更する ::-webkit-スクロールバー{ ...

埋め込みJavaScriptと外部リンクの基本的な応用方法

目次埋め込みJavaScriptと外部リンクの基本的な応用JavaScript の記述方法には、イン...

Vue.js スタイルレイアウト Flutter ビジネス開発共通スキル

シャドウスタイルにおけるフラッターとCSSの対応UIによって指定されたCSSスタイル 幅: 75px...

mysqldump を使用した MySql のインポートおよびエクスポート方法の概要

データベースデータをエクスポートします:まずcmdを開いてMySQLのbinフォルダに入ります1. ...

Dockerイメージを完全にアンインストールする手順

1. docker ps -a 実行中のイメージプロセスを表示する [root@mylinux~]#...

Linux ドメイン ネーム サービス DNS 設定方法

DNSとはDNS の正式名称は Domain Name System で、ドメイン名解決システムを意...

Centos7 から Centos8 へのアップグレードに関するチュートリアル (画像とテキスト付き)

正式な環境でアップグレードする場合は、データと重要な設定をバックアップしてください。アップグレードに...

Tomcatサーバーのセキュリティ設定方法

Tomcat は、Java Community Process を通じて Sun が開発した、広く使...

MySQLデータベースの使用仕様の概要

導入: MySQL データベースの仕様に関しては、皆さんも何らかのドキュメントを読んだことがあると思...