【发布时间】:2016-05-03 08:08:57
【问题描述】:
我正在使用 gtilab 和 docker 建立一个持续集成系统。出于某种原因,我必须在 CI 系统的一个阶段将当前容器作为新的 docker 镜像提交,这样我就可以在后续阶段重用该镜像。
总而言之,我必须执行这个命令:
docker commit $CONTAINER_ID $NEW_IMAGE_NAME
但是从容器内部。后来从另一个容器:
docker rmi $NEW_IMAGE_NAME
一种解决方案可能是设置 ssh 公钥身份验证,并且:
ssh user@172.17.0.1 docker ...
其中,172.17.0.1是主机IP地址。为了安全起见,我可以限制 ssh 用户只能访问特定的命令。
另一种解决方案是在主机的网络套接字上创建公共服务。但是这里最好的方法是什么?我更喜欢安全的解决方案,因此您只能从容器内部提交一个 docker 映像并删除创建的映像(而不是其他映像)。所以,一个狂野的 ssh 并不那么安全。而且,我更喜欢不依赖主机 IP 地址的更便携的解决方案。你有什么建议?
【问题讨论】:
-
您能否明确沟通需求。请问如何编写容器需要的协议规范或 API?
-
我只需要从容器内部执行两个简单的命令:docker commit 和 docker rmi,但限制是 rmi 只能删除前一个用户提交的图像。