Exec forma v Dockerfile: předání curl --noproxy * bez uvozovek shellu
V exec formě je každý řetězec JSON jeden argument. Další uvozovky shellu mohou změnit hodnotu, kterou curl pro --noproxy obdrží.
V exec formě Dockerfile je pole JSON už seznamem argumentů:
CMD ["curl", "--noproxy", "*", "https://example.com/"]
Zde curl dostává --noproxy a * jako samostatné argumenty. Hvězdička se nerozšiřuje na názvy souborů, protože tuto formu neinterpretuje žádný příkazový shell.
Nedávejte volbu a hodnotu do jednoho řetězce JSON. Ani nepřidávejte doslovné jednoduché uvozovky dovnitř řetězce jen proto, že je terminálový příklad použil k ochraně shellu. Tyto znaky uvozovek se mohou stát součástí hodnoty předávané programu.
Shellová forma má jinou hranici: skutečně zahrnuje shell, takže tam platí pravidla uvozování a expanze. Explicitní shell spuštěný z příkazu v exec formě tuto hranici vrací zpět.
Význam --noproxy * u curlu je obejít proxy pro všechny hostitele. To je volba směrování, nikoli obecný test formátu argumentů. Použijte ji jen tehdy, když je přímá trasa zamýšlenou politikou. Pokud potřebujete užší obejití, zadejte odpovídající hodnotu ve stejné struktuře jeden argument na prvek.