GNU/Linux >> Linux の 問題 >  >> Ubuntu

実行中のDockerコンテナにSSHで接続してコマンドを実行する方法

はじめに

Docker コンテナを作成できるユーティリティです アプリケーションを実行するため。 Dockerコンテナーは、完全に含まれた仮想マシンです。

このガイドでは、DockerコンテナにSSHで接続してコマンドを実行する3つの方法を紹介します。

前提条件

  • Dockerを実行しているLinuxシステム
  • 事前設定されたコンテナが読み込まれ、実行されています
  • ターミナルウィンドウ/コマンドプロンプトへのアクセス( Ctrl + Alt + T またはCtrl + Alt + F2
  • sudoのユーザーアカウント 特権

方法1:dockerexecを使用してDockerコンテナでコマンドを実行する

docker exec commandは、すでに実行されているコンテナー内で指定されたコマンドを実行します。 bashシェルを作成することで、DockerコンテナにSSHで接続できます。 (コマンドを入力できるシェル)

docker execを使用するための基本的な構文 コンテナでコマンドを実行するには、次のようにします。

docker exec [options] [container] [command]

Dockerイメージをまだプルしていない場合は、プルすることから始めます。たとえば、 Nginxを読み込むことができます :

sudo docker pull nginx

次に、画像を実行します:

sudo docker run ––name nginx–test –d nginx

実行中のすべてのコンテナを一覧表示して確認します:

sudo docker ps

これで、nginx-testイメージが読み込まれるはずです。

そのDockerコンテナにアクセスしてコマンドを実行するには、次のように入力します。

sudo docker exec –it nginx-test /bin/bash

これで、 nginx-testにログインしました 容器。したがって、入力したコマンドはすべてそのコンテナで実行されます。 –i オプションはインタラクティブを指定します 、および –t ターミナルタイピングを有効にします インターフェイス。

方法2:dockerattachコマンドを使用して実行中のコンテナーに接続する

docker attach コマンドは、ローカル入力、出力、およびエラーストリームをコンテナにリンクします。デフォルトでは、 bashで起動します シェル 。実行中のコンテナに接続するには、次のように入力します。

sudo docker attach container_Name

以下の例では、システムは nginx-testに接続します コンテナ:

sudo docker attach nginx-test

コマンドが実行されると、コンテナで作業します。実行するコマンドはすべて、仮想Docker環境に影響します。

方法3:SSHを使用してDockerコンテナに接続する

SSH(Secure Shell)を使用してDockerコンテナに接続できます。通常、SSHは、ネットワークを介してサーバーにリモート接続するために使用されます。このテクノロジーは、システム上の仮想Dockerコンテナに接続する場合も同じように機能します。

ステップ1:システムでSSHを有効にする

SSHサービスをインストールして有効にすることから始めます:

Ubuntu 18.04でSSHを有効にする:

sudo apt-get install ssh

sudo systemctl ssh start

sudo systemctl ssh enable

service ssh status

CentOS 7でSSHを有効にする:

yum –y install openssh-server openssh-clients

service sshd start

service sshd enable

service sshd status

ステップ2:コンテナのIPアドレスを取得する

docker inspectを使用して、コンテナのIPアドレスを取得します コマンドを実行し、結果を除外します。

最新のDockerエンジンの場合は、次のコマンドを使用します:

sudo docker inspect -f "{{ .NetworkSettings.IPAddress }}" container_name

古いDockerエンジンの場合は、次を実行します:

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name

上の画像に示すように、システムはIPアドレスを表示します。

ステップ3:DockerコンテナへのSSH

IPアドレスをpingして、使用可能であることを確認します:

ping –c 3 172.17.0.2

SSHツールを使用してイメージに接続します:

ssh [email protected]

システムは、そのコンテナのrootユーザーのパスワードの入力を求める必要があります。 接続が拒否されましたと表示されている場合 、おそらくコンテナはSSH用にプロビジョニングされていません。プロンプトが変わると、SSH経由で接続され、コンテナでコマンドを実行できるようになります。


Ubuntu
  1. RockyLinux8にDockerContainerをインストールしてセットアップする方法

  2. 実行中のSystemdコンテナ内でコマンドを実行する方法は?

  3. 実行中のDockerコンテナでコマンドを実行する方法

  1. Dockerコンテナ内でプログラムを実行する方法は?

  2. DockerコンテナでMySQLを実行する方法

  3. SSHログインでコマンドを自動的に実行する方法は?

  1. DockerでRedisをデプロイして実行する方法

  2. Ubuntu 20.04にPodman(Docker Alternative)をインストールして使用する方法

  3. DockerコンテナにSSHで接続する方法