Docker
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命令中的不一样导致。(也只有我这个傻逼才会范这种错误吧。搞得头昏眼花了。