簡體   English   中英

將紅寶石提供給Debian9圖像時出現問題

[英]Problem making ruby available to Debian9 image

我已按照以下說明在debian9映像上安裝ruby (我需要較舊的ruby版本,即2.1.5 )。

我還包括一個額外的步驟,以使所有用戶登錄后即可使用它,即

echo "source /etc/profile.d/rvm.sh >> /etc/profile"

所以現在,當我登錄到終端后運行容器時,可以使用ruby

$ docker run -ti registry/container:tag bash
root@f6805551226c:/# ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

但是,當我在沒有顯式登錄的情況下運行容器時, ruby顯然不可用,因為該文件不是源文件

docker run -it registry/container:tag ruby -v
docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused "exec: \"ruby\": executable file not found in $PATH": unknown.

我該如何解決?

/etc/profile僅在用戶登錄到shell時起作用:

docker run -it registry/container:tag ruby -v只會將ruby -v設置為容器的PID1 ,而不使用shell作為容器的PID1 ,因此/etc/profile將不起作用。

僅下一個將起作用:

docker run -it registry/container:tag bash -c "ruby -v"

當您使用docker run -ti registry/container:tag bashPID1是bash,因此/etc/profile將生效,因此您可以在路徑中使用ruby。

通過使用ENV指令並自己設置PATH變量來檢查是否可以解決這些問題。 它在以下問題上對我有用為什么dockered centos無法識別pip? 在實踐中,Docker文檔中也提到了這一點:

編寫Dockerfile的最佳實踐

ENV

為了使新軟件更易於運行,可以使用ENV為容器安裝的軟件更新PATH環境變量。 例如, ENV PATH /usr/local/nginx/bin:$PATH確保CMD ["nginx"]正常工作。

暫無
暫無

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

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