Dockerコンテナーを実行すると、docker ps
を使用して実行中のコンテナーを一覧表示できます
次に、docker attach <container id>
で添付できます
問題は、実行中のコンテナを同時に接続でき、同時に実行中の作業を確認できるすべての人が、オンラインコースにとってはクールかもしれませんが、仕事ではあまり良くないということです。
どうすればそれを防ぐことができますか?
Sudoを使用したDockerサブコマンド
1つの解決策は、Sudo
を使用して選択したdockerコマンドを提供し、docker attach
またはdocker run
コマンドを提供しないことです。
実行を制限することができますdocker ps
ユーザーに許可したいサブコマンドのみを提供する方法については、Sudo
のドキュメントまたはmanページを参照してください。とにかく、ユーザーをDockerグループにすぐに配置する代わりに、Sudo
を使用してDockerアクセスを提供することをお勧めします。
例:
visudo
を実行するか、/etc/sudoers.d/<username>
の下にファイルを作成し、許可する必要のあるコマンドごとに1行を作成します(これは大雑把ですが、本番環境では、いくつかの構成を使用してSudo構成を管理すると思いますpuppet
、chef
またはansible
のような管理ツールは、設定コードを記述した後でこれを実行します)
<user_account> ALL=(root) NOPASSWD: /usr/bin/docker ps
詳細:
注:自動ボットユーザーがdocker pullコマンドのみを必要とするようなユースケースがあったため、Sudoを通じてのみdocker pullを実行するようにそのアカウントを制限しました。このアプローチにより、次のことが確実になります。
可用性(必要なものを提供)
最小特権の原則
Docker Engineホストのユーザーが(Sudo特権またはDockerグループのメンバーシップのいずれかを介して)Dockerコマンドを実行する権限を持っている場合、ホストで実行されているコンテナーへの接続を制限する方法は(ベースDocker製品では)ありません
Dockerアクセスを効果的に提供することは、ホストにルートを提供することと同じです。
したがって、それを防ぐための鍵は、他のユーザーがそのホスト上でdockerコマンドを実行する権限を持てないようにすることです。