GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

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

通常、Dockerアプリケーションを完全に含める必要がありますが、開発や自動化の目的で、LinuxVMがあるかのようにDockerコンテナを操作できると便利な場合があります。 Dockerは、コンテナー内でコマンドやシェル全体を実行するためのツールを提供します。

コンテナでのコマンドの実行

コンテナでコマンドを実行するには、そのコンテナに特定の名前を設定していない限り、そのコンテナIDが必要です。これは、Dockerプロセスリストから見つけることができる長い16進文字列です:

docker ps

次に、 exec -itを使用できます コンテナ内で実行するコマンド。たとえば、ログファイルの出力を表示する:

docker exec -it containerID tail /var/log/nginx/access.log

コンテナ内でスクリプトを実行することもできます:

docker exec -it containerID script.sh

-it フラグはそれぞれ「インタラクティブモード」とTTY用であり、ほとんど常に使用されます。使用できるフラグは他にもいくつかあります:

  • -workdir または-w コマンドの前に現在のディレクトリを変更します。
  • -デタッチ 、または -d 、コマンドをバックグラウンドで実行します。
  • -env 、または -e 、実行する前に環境変数を設定します。
  • -env-file 同じことをしますが、秘密を処理するためにより安全です。
  • -特権 拡張権限でコマンドを実行します。
  • -ユーザー 別のユーザーとして実行

もちろん、これは実行中のコンテナでのみ機能します。メンテナンスを行うためにコンテナを一時停止する場合は、新しいイメージバージョンを介して更新をデプロイするか、ホストOSからボリュームにマウントされたデータに変更を加える必要があります。

コンテナへのSSH接続

単純なコマンドに限らず、 / bin / bashを実行して実際にシェルを開くことができます。 コマンドとして。利用できるツールに制限があるかもしれません—ほとんどのコンテナはかなり必要最低限​​のLinuxインストールを備えています—しかしそれは多くのコマンドの実行をはるかに簡単にします。

docker exec -it containerID /bin/bash

これは単にホストからアクセス可能なシェルであり、ほとんどの場合うまく機能します。ただし、必要に応じて、VPSのようにSSH経由で完全に利用できるようにコンテナを設定できます。設定の詳細については、DockerコンテナでSSHサービスを実行するためのガイドをご覧ください。

関連: DockerコンテナにSSHで接続する方法

コンテナとの間でファイルをコピーする

exec -itを使用してコマンドを実行する 動作しますが、ホストとコンテナの間に、簡単なスクリプト作成を妨げるレイヤーがまだあります。 1つは、コマンドをコンテナに送信するのは簡単ですが、ファイルシステムから出力を取得するのは難しいことです。

exec -itのSTDOUTをパイプすることはできますが ホストOS上の他のサービスに、コンテナのファイルシステムとの間でファイルをコピーすることもできます。たとえば、ログファイルを取り出してホストに貼り付ける:

docker cp container:/var/log/nginx/example.log example.log

または、ディレクトリ全体を引き出す:

docker cp nginx:/etc/nginx/ nginxconfig/

ただし、これを定期的に行っている場合は、バインドまたはボリュームマウントを使用して、ホストからデータに直接アクセスできるようにすることを検討してください。

関連: DockerCpを使用してホストとコンテナ間でファイルをコピーする方法


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

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

  3. docker コンテナ内で cron ジョブを実行する方法

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

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

  3. Dockerコンテナで実行されるプログラムにシグナルを送信するには?

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

  2. 例を使用してDockerRunコマンドを使用する方法

  3. ユーザーを Docker コンテナに追加するにはどうすればよいですか?