我想要一个可以扩展mongo图像并在上面带有ssh的docker图像。我写了这行:
FROM mongo
RUN apt-get update && \
apt-get install -y openssh-server
EXPOSE 22
RUN useradd -s /bin/bash -p $(openssl passwd -1 test) -d /home/nf2/ -m -G sudo test
CMD ["sh", "-c", "service ssh start", "bash"]
这仅开始ssh
而不是开始mongo
。如果删除,mongod
则从基本映像执行最后一行。
可以在同一映像中运行两个命令吗?
如@David所述,CMD通常运行一个进程,因此当您覆盖service ssh start
它时,它将不会运行Mongo,因为它将覆盖CMD
运行Mongo进程的基本映像。
尝试更改CMD
以启动这两个过程。
CMD ["sh", "-c", "service ssh start && mongod"]
但是您应该知道service ssh是否由于某种原因而停止,您的容器仍将继续运行,并且一旦Mongo进程停止,容器将死亡。您可以使用以下命令进行验证
docker run -dit --name test --rm abc && docker exec -it test bash -c "service ssh status"
ce30fa23eeb07f1e268008cce7566585ba1f98c0a3054cecb145443f3275a0d4
* sshd is running
更新:
由于mongod仅会启动Mongo进程,并且不会发生任何初始化数据库,因此请尝试更改用于模仿数据库的命令。
FROM mongo
RUN apt-get update && \
apt-get install -y openssh-server
ENV MONGO_INITDB_ROOT_USERNAME=root
ENV MONGO_INITDB_ROOT_PASSWORD=example
RUN useradd -s /bin/bash -p $(openssl passwd -1 test) -d /home/nf2/ -m -G
CMD ["sh", "-c", "service ssh start && docker-entrypoint.sh mongod"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句