Windows環境搞好的Dockerfile文件 在Linux上報錯了


錯誤1:
standard_init_linux.go:187: exec user process caused "no such file or directory"

[root@izbp1dcscvry6tnoiqx8stz manager]# docker run --name managerV1 newhub.zkh360.com/zkh360/otter-manager-uat:v0.1
standard_init_linux.go:187: exec user process caused "no such file or directory"
[root@izbp1dcscvry6tnoiqx8stz manager]#
[root@izbp1dcscvry6tnoiqx8stz manager]# docker logs managerV1
standard_init_linux.go:187: exec user process caused "no such file or directory"
[root@izbp1dcscvry6tnoiqx8stz manager]#

原因: 鏡像的entrypoint設置的啟動腳本格式是dos,在linux系統上用vi修改成unix格式即可 【windows下操作之傷】
把.sh文件逐個執行以下操作:

1)用vi打開文件
2)執行 :set ff 然后回車,可以看到fileformat=dos

3)修改成unix
:set ff=unix 回車
4)執行:set ff,可以看到已經改為 fileformat=unix
https://www.wandouip.com/t5i111338/

錯誤2:

[root@izbp1dcscvry6tnoiqx8stz manager]# docker run 793059909/otter-manager-uat:v0.2 -it bash
DOCKER_DEPLOY_TYPE=VM
==> INIT /alidata/init/02init-sshd.sh
==> EXIT CODE: 0
==> INIT /alidata/init/fix-hosts.py
/alidata/bin/main.sh: /alidata/init/fix-hosts.py: /usr/bin/python^M: bad interpreter: No such file or directory ==> EXIT CODE: 126
==> INIT DEFAULT
Generating SSH1 RSA host key: [  OK  ]
Starting sshd: [  OK  ]
Starting crond: [  OK  ]
==> INIT DONE
==> RUN -it bash
/alidata/bin/main.sh: line 27: exec: -i: invalid option
exec: usage: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
[root@izbp1dcscvry6tnoiqx8stz manager]#

 

看了下main.sh的第27行是:

 

 

#!/bin/bash

[ -n "${DOCKER_DEPLOY_TYPE}" ] || DOCKER_DEPLOY_TYPE="VM"
echo "DOCKER_DEPLOY_TYPE=${DOCKER_DEPLOY_TYPE}"

# run init scripts
for e in $(ls /alidata/init/*) ; do
    [ -x "${e}" ] || continue
    echo "==> INIT $e"
    $e
    echo "==> EXIT CODE: $?"
done

echo "==> INIT DEFAULT"
service sshd start
service crond start

#echo "check hostname -i: `hostname -i`"
#hti_num=`hostname -i|awk '{print NF}'`
#if [ $hti_num -gt 1 ];then
#    echo "hostname -i result error:`hostname -i`"
#    exit 120
#fi

echo "==> INIT DONE"
echo "==> RUN ${*}"
exec "${@}"


先解決Py報錯的事,相關也是文件格式的事。果然:

仔細檢查報錯內容,並不會發現任何語句錯誤或者路徑錯誤,注意^m,這是windows下的斷元字符。所以問題就是,在多個環境上進行編寫,可能會因為字符(win/unix換行符不一樣)、縮進(兩個編輯環境的縮進tab/space不一致)均易導致這種神不知鬼不覺的錯誤,很難找到。

解決方法見上面*.sh腳本的解決辦法

https://blog.csdn.net/qq_31331027/article/details/84590300


[root@iZbp1ftvuebdvy5eo7i9x5Z canal]# docker run -it newhub.youhuale.cn/youhuale/canal-omssapvcpro:v0.2 bash
/usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See '/usr/bin/docker-current run --help'.

[root@iZbp1ftvuebdvy5eo7i9x5Z canal]# systemctl daemon-reload
[root@iZbp1ftvuebdvy5eo7i9x5Z canal]# systemctl restart docker.service

 

[root@iZbp1ftvuebdvy5eo7i9x5Z canal]# docker run -it newhub.youhuale/zkh360/canal-omssapvcpro:v0.2 bash
Unable to find image 'newhub.youhuale/zkh360/canal-omssapvcpro:v0.2' locally
Trying to pull repository newhub.youhuale/zkh360/canal-omssapvcpro ...
/usr/bin/docker-current: repository newhub.youhuale/zkh360/canal-omssapvcpro not found: does not exist or no pull access.
See '/usr/bin/docker-current run --help'.

進行docker login

[root@iZbp1ftvuebdvy5eo7i9x5Z canal]# docker login newhub.youhuale.com
Username: root
Password:
Login Succeeded
[root@iZbp1ftvuebdvy5eo7i9x5Z canal]#

 







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM