コードを実行するように設定したOpenSuse 42.3ドッカーイメージがあります。イメージには、Dockerfileを使用して最初のイメージ生成中に作成する "myuser"という単一のユーザー(ルート以外)があります。ユーザーがどのオペレーティングシステムを使用しているかに基づいてイメージからコンテナを生成する3つのスクリプトファイルがあります。コンテナ作成時にドッカー画像のユーザー名を設定しますか?
質問:コンテナ生成スクリプトを実行するユーザーのユーザー名に、コンテナ内のユーザー名 "myuser"を設定できますか?
私の目標は、ユーザーがコンテナにインタラクティブにポップアップさせ、コンテナ内からコードを実行できるようにすることです。コードは実行してIOを持つ単なるバイナリなので、コンテナ内からユーザのディレクトリにアクセスして、マシン上のフォルダに移動してファイルシステムの出力を生成するコードを実行できるようにします。
以下は、これまでに構築したものです。私はdocker run
へのLinuxスクリプトの呼び出し中にUSER環境変数を設定しようとしましたが、 "myuser"から "bob"(コンテナを起動したホストマシン上のユーザー名)と言うユーザーを変更しませんでした。ディレクトリのマウントは正常に動作しているようです。自分の目標を達成することさえ可能かどうかはわかりません。
のLinuxコンテナのスクリプト:
username="$USER"
userID="$(id -u)"
groupID="$(id -g)"
home="${1:-$HOME}"
imageName="myImage:ImageTag"
containerName="version1Image"
docker run -it -d --name ${containerName} -u $userID:$groupID \
-e USER=${username} --workdir="/home/myuser" \
--volume="${home}:/home/myuser" ${imageName} /bin/bash \
マックコンテナのスクリプト:
username="$USER"
userID="$(id -u)"
groupID="$(id -g)"
home="${1:-$HOME}"
imageName="myImage:ImageTag"
containerName="version1Image"
docker run -it -d --name ${containerName} \
--workdir="/home/myuser" \
--v="${home}:/home/myuser" ${imageName} /bin/bash \
のWindowsコンテナのスクリプト:すべての
ECHO OFF
SET imageName="myImage:ImageTag"
SET containerName="version1Image"
docker run -it -d --name %containerName% --workdir="/home/myuser" -v="%USERPROFILE%:/home/myuser" %imageName% /bin/bash
echo "Container %containerName% was created."
echo "Run the ./startWindowsLociStream script to launch container"
この質問はなぜ控除されていますか? – wandadars
それを知ってうれしいです。 Upvoted – Robert
少なくともLinuxのスクリプトでは、あなたがやっているときに '-u $ userID:$ groupID'を指定するだけで、コンテナがホストファイルシステムにスタッフを書くことができるようになります。あなたはそこにいる正確な問題は何ですか? – whoan