【发布时间】:2017-12-16 00:34:21
【问题描述】:
第一次使用 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#
【问题讨论】:
-
为什么要将 localTmp 卷挂载到生成文件的 /root 上?
-
我不希望在容器重新启动时擦除密钥。我认为这是确保主目录 (/root) 的内容(例如 ssh 目录和在构建中创建的密钥在容器重启后仍然存在)的方法。这是错的吗?
-
卷将存储安装在路径上,这实际上会导致卷中发生任何 I/O。如果您删除 -v 选项,您会看到您期望的文件吗?
-
没有文件,但 /root/.ssh 目录仍然存在。
-
如果文件不存在,那么我会说生成它们时出现问题。在构建期间创建的文件将在容器中。