首次尝试使用Docker。在构建容器时尝试创建ssh密钥。构建输出显示它们已创建,但我没有在/root/.ssh中看到它们在我期望的位置。我做错了什么?
FROM ubuntu
MAINTAINER AfterWorkGuinness
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir /root/.ssh
RUN cd /root/.ssh
RUN ssh-keygen -t rsa -N "" -f id_rsa
EXPOSE 22
构建输出
Step 5/7 : RUN mkdir /root/.ssh
---> Running in 373406b5976a
---> acb1b7b1a8c0
Removing intermediate container 373406b5976a
Step 6/7 : RUN ssh-keygen -t rsa -N "" -f /root/.ssh/id_rsa
---> Running in 36ee488a98bd
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:bnm79N/fHIwcbFAH/obiP3nFFPevdo25kECvQzNXfq8 root@36ee488a98bd
The key's randomart image is:
+---[RSA 2048]----+
| o.. |
| o ...|
| .. .. +|
| . .ooo o|
| S =.o=.=o|
| . o.*+.=.=|
| + =.oo.*+|
| . o +.+===|
| o..+Eo*|
+----[SHA256]-----+
---> d3f23fbf9240
Removing intermediate container 36ee488a98bd
Step 7/7 : EXPOSE 22
---> Running in 1381315dad22
---> 50e5e6337ee6
Removing intermediate container 1381315dad22
Successfully built 50e5e6337ee6
正在运行容器:
docker run -it -v localTmp:/root ubuntu-ssh
目录为空
root@09904a84f312:~/.ssh# cd /root/.ssh
root@09904a84f312:~/.ssh# ls
root@09904a84f312:~/.ssh#
答案 0 :(得分:0)
我看到您在Docker doesn't create directory during build中询问了此问题的第一部分,并且您已尝试使用命名卷而不是绑定装置来解决此问题。绑定装载和命名卷之间唯一不同的是如果指定的卷为空,Docker会将其中任何内容安装在其上的内容复制到其中。如果指定的卷中有任何(例如,因为您之前已使用它来测试),您将无法看到该复制行为。
但老实说,这就是重点:你应该在运行时生成ssh密钥,而不是在 build 时生成。实际上,您希望从该映像部署的每个容器都具有相同的ssh密钥。
如果确实想要使用相同的ssh密钥的一堆容器,那么在构建时继续生成密钥,但将它们放在文件系统上的其他位置,然后将它们复制到{{1在运行时。
在上面,几乎每次我说"在运行时"我建议使用/root/.ssh
脚本。您可以阅读有关here的更多信息。