ドッカーあなたは非常に簡単にこれを行うことができます。
docker pull ubuntu
docker run -t -i ubuntu /bin/bash
# make your changes and then log out
docker commit $(docker ps -a -q | head -n 1) sandbox
cat > /usr/local/bin/sandbox <<EOF
#!/bin/sh
exec docker run -t -i --rm=true sandbox /bin/bash
EOF
chmod a+x /usr/local/bin/sandbox
echo /usr/local/bin/sandbox >> /etc/shells
useradd testuser -g docker -s /usr/local/bin/sandbox
passwd testuser
たびtestuser
ログで、彼らはそれの外に何を見ることができない孤立した容器、他のユーザーのではないとしても、容器の中に配置されます。
コンテナはログアウトすると自動的に削除されます。
説明:
docker pull ubuntu
ここで、使用するベースイメージをフェッチします。Dockerは標準イメージを提供し、ubuntuはその1つです。
docker run -t -i ubuntu /bin/bash
# make your changes and then log out
ここでは、ubuntuイメージからシェルを起動します。行った変更はすべてユーザーに保持されます。Dockerfileを
使用してイメージを構築することもできますが、一時的には、これはより簡単だと思います。
docker commit $(docker ps -a -q | head -n 1) sandbox
ここでは、最後に実行されたコンテナをと呼ばれる新しいイメージに変換しsandbox
ます。
cat > /usr/local/bin/sandbox <<EOF
#!/bin/sh
exec docker run -t -i --rm=true sandbox /bin/bash
EOF
これは、ユーザーがログイン時に強制的に実行される偽のシェルになります。スクリプトはそれらをDockerコンテナーで起動し、ログアウトするとすぐに自動的にクリーンアップされます。
chmod a+x /usr/local/bin/sandbox
これが明白であることを願っています:-)
echo /usr/local/bin/sandbox >> /etc/shells
これはあなたのシステムでは必要ないかもしれませんが、私の場合、シェルがに存在しない限り、ログインシェルになることはできません/etc/shells
。
useradd testuser -g docker -s /usr/local/bin/sandbox
シェルをスクリプトに設定した新しいユーザーを作成します。スクリプトは、サンドボックスコンテナーにそれらを強制的に起動します。これらはdocker
グループのメンバーであるため、ユーザーは新しいコンテナーを起動できます。
ユーザーをdockerグループに追加する代わりに、sudo権限を1つのコマンドに付与することもできます。
passwd testuser
これも明らかだと思います。