Docker学习记录之踩坑笔记

出了几个web水题,甲方要求写dockerfile,萌新我表示没写过,只能现场学一波了。

下面是我写dockerfile的心塞史。把遇到的几个小问题列一下。

0X01.别为了图快直接FROM别人的镜像!

直接from大牛封装的镜像固然是快捷便利,但是相应的自己学习的知识就少了很多,很多安装、运维之类的经验就少了。而且,对应的各服务版本的坑也要重新处理。可能封装的php或者mysql版本和你代码不一样,就会导致一堆坑。这里不说了,心塞。

0X02.报错bash:$’\r’: command not found!

出现这个问题的原因是在win下编辑,然后放linux里面跑,而win的回车其实是”\r\n”,而放linux里面换行只有”\n”,所以需要将文件的格式从dos转换为unix。

这里提供三种解决方法:

a:使用dos2unix命令

dos2unix   xxx.sh

 

b:  使用vim或者vi命令

进入编辑页面之后

输入:set ff

可以看到当前的文件格式是dos,现在我们把它转unix。

:set ff=unix或者:set fileformat=unix

 

c:使用sed命令去掉”\r”

sed -i ‘s/\r$//’ <filename>

0X03.报错No such file or directory The command ‘/bin/sh’

原因有二。

a:路径原因。

你的sh文件不在docker的/bin/sh里面。

b:同0X02报错的原因。

在win下编辑放linux里会报该错误。解决方法同0X02。

 

0x04.报错starting container process caused “exec: \”/run.sh\”: stat /run.sh: no such file or directory”.

路径原因。CMD处执行的run.sh文件与run命令中的不一样导致。(也只有我这个傻逼才会范这种错误吧。搞得头昏眼花了。

(更多…)