我正在尝试构建一些docker容器,我发现编辑Dockerfile的迭代过程,脚本在其中运行,笨重.我正在寻找最佳实践,并了解其他人如何进行.
我的初始流程是:
> docker build -t mycontainer mycontainer
> docker运行mycontainer
> docker exec -i -t<容器ID> “/ bin / bash”#进入容器进行调试
> docker rm -v<容器ID>
>码头工人rmi mycontainer
>重复
这对于每次迭代都感觉很昂贵,特别是如果它是错字的话.
这个替代过程需要少一点迭代:
>在dockerfile中安装vim
> docker运行mycontainer
> docker exec -i -t<容器ID> “/ bin / bash”#进入容器来编辑脚本
> docker cp完成后复制已编辑的文件.
>如果我需要运行任何命令,我会仔细记住并更新容器外的Dockerfile.
>不使用vim重建图像
这需要更少的迭代,但不是无痛,因为一切都非常手动,我必须记住哪些文件已更改并已更新.
Dockerfile开发工作流程
注意:当我处于活动开发阶段时,我总是在容器中安装vim.我发布时只是将它从Dockerfile中取出来.
>设置tmux / gnu屏幕/ iTerm /您最喜欢的垂直分割控制台实用程序.
>在正确的控制台上我运行:
$vim Dockerfile
>在左侧控制台上我运行:
$docker build -t username/imagename:latest . && docker run -it -name dev-1 username/imagename:latest
>现在水平分割左侧控制台,以便运行STDOUT位于上方且shell位于下方.在这里你将运行:
docker exec -it dev-1
内部编辑或使用以下方式进行测试:
docker exec -it dev-1
>每当您对使用Dockerfile保存(:wq!)的工作感到满意,然后在左侧控制台中运行上面的命令.测试行为.如果你不开心跑:
docker rm dev-1
然后再次编辑并重复步骤#3.
定期,当我构建了太多图像或容器时,我会执行以下操作:
>删除所有容器:docker rm $(docker ps -qa)
>删除所有图片:docker rmi $(docker images -q)