使用Docker時,經常需要在容器內運行一些腳本或命令。有時候這些腳本需要傳入一個數組,就像這樣:
#!/bin/bash array=("apple" "banana" "cherry") echo "${array[0]}" echo "${array[1]}" echo "${array[2]}"
那么該如何在Docker中傳入數組呢?
一種方法是直接在Dockerfile中定義一個環境變量,把數組傳入。以Dockerfile中的ARG指令為例:
ARG ARRAY="apple banana cherry"
在啟動容器時,可以使用docker run命令的--env選項將這個環境變量傳入容器:
docker run --env ARRAY="apple1 banana1 cherry1" image-name
這種方法雖然簡單,但是要求數組中的元素之間使用空格隔開,而不能使用逗號等其他字符隔開。
另一種方法是使用docker exec命令在容器內執行腳本,并在命令中傳入一個JSON格式的數組。以bash為例:
docker exec container-name bash -c 'array=("$@" && echo "${array[0]}" && echo "${array[1]}" && echo "${array[2]}")' _ "[\"apple\", \"banana\", \"cherry\"]"
這種方法可以傳入任意類型的數組,并且可以在容器內的腳本中以數組形式使用。
通過上述兩種方法,我們可以方便地在Docker中傳入數組,并在容器內的腳本中使用。