簡體   English   中英

從Docker容器中以不同用戶身份運行命令/腳本

[英]Run Commands/Scripts as Different User from within Docker Container

首先,我知道這可能不是問題的最“容器化”解決方案。 不過,在這一點上,我想知道我是否必須放棄目前的工作,或者是否可以進行這項工作。

我需要在服務器之間移動文件並備份它們。 我目前有一個腳本可以做到這一點。 我運行此腳本的用戶具有所有服務器的密鑰,因此該腳本在服務器之間進行rsync同步是沒有問題的。

我現在正在創建一個Web服務,用戶可以Ping安全地移動其文件並進行備份。 這樣可以避免他們與我聯系以運行腳本,並且以后可以與某些工作流程軟件集成。

但是,我的docker容器捕獲到Web服務的http請求時,不會在任何地方都有密鑰,因此無法成功運行腳本。 我正在尋找一種解決方案,使我可以運行此腳本,同時還具有用戶可以向其發出請求的Web服務。 我最初的希望是該路由基本上傳遞args並運行腳本。

我不知道以下想法的可行性,但這是我到目前為止的兩個想法。

  • 以我的用戶身份運行Docker容器,該容器隨處可見密鑰
  • 在啟動時將Docker密鑰提供給任何地方

有人會對上述方法或對該問題的可能解決方案有任何建議嗎?

隨時問更多問題,因為我知道這是一個奇怪的問題。 在此先感謝您的幫助!

如果我們要通過SSH手動運行傳輸,我們將無法避免某些東西需要密鑰的事實。 類似於“在啟動時將docker密鑰提供給任何地方”,我們可以將密鑰作為卷綁定安裝到容器中:

$ docker run -d -v /host/path/to/keys:/container/path/to/keys:ro image command ...

這使容器對主機上的密鑰具有只讀訪問權限。 它還使我們可以在需要時更新主機上的密鑰,而無需重新啟動容器。

我們可以通過將密鑰存儲在專用機密存儲服務中來實現此目的,並且容器可以在需要時獲取密鑰,但是對於這個簡單的用例,我認為不需要構建比必要的復雜性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM