はじめに
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経由で接続され、コンテナでコマンドを実行できるようになります。