Que eu saiba, apenas ENVpermite que, conforme mencionado em " Substituição do ambiente "
As variáveis de ambiente (declaradas com a ENVinstrução) também podem ser usadas em determinadas instruções como variáveis a serem interpretadas pelo Dockerfile.
Eles precisam ser variáveis de ambiente para serem redeclarados em cada novo contêiner criado para cada linha do Dockerfile docker build.
Em outras palavras, essas variáveis não são interpretadas diretamente em um Dockerfile, mas em um contêiner criado para uma linha Dockerfile, daí o uso da variável de ambiente.
Neste dia, eu uso os dois ARG( docker 1.10+ edocker build --build-arg var=value ) e ENV.
Usar ARGsozinho significa que sua variável é visível no tempo de construção, não no tempo de execução.
Meu Dockerfile geralmente possui:
ARG var
ENV var=${var}
No seu caso, ARGbasta: eu o uso normalmente para definir a variável http_proxy, para que a construção do docker precise acessar a Internet no momento da construção.