[英]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 bash
, PID1
是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.