无法将ssh密钥写入CMD中的Docker容器

zpgglvta  于 2022-11-03  发布在  Docker
关注(0)|答案(1)|浏览(140)

我正在尝试使用CMD将ssh密钥写入docker映像。
我有像下面这样的Docker文件。

FROM public.ecr.aws/ubuntu/ubuntu:18.04_stable
CMD ["sh", "-c", "echo $PUBLIC_KEY >> ./.ssh/id_rsa.pub"]
CMD ["sh", "-c", "echo $PRIVATE_KEY >> ./.ssh/id_rsa"]

我用env var运行容器,如下所示:

docker run -it -d -e PUBLIC_KEY="key1" -e PRIVATE_KEY="key2" my-image

然而,当我手动地对运行中的容器执行这两个命令时,它会把公钥和私钥都写到正确的位置。
有人能解释一下吗?我应该如何让CMD工作?

wmtdaxz3

wmtdaxz31#

CMD是一种在启动容器时定义 default 命令的方法。只能有一个默认命令。在您给出的示例中,第二个CMD将是默认命令,第一个CMD将不会运行。只有在您没有在命令行上指定要运行的命令(即作为命令行的一部分)时,默认命令才会运行
COMMAND
如果您提供COMMAND,则不会运行停靠文件中的CMD。当您发出docker exec时,您显式运行了命令行,因此它将始终运行。

相关问题