您好:
參考
https://www.w3cschool.cn/docker/docker-image-usage.html
WIN10下,其中,dockefile如下
FROM centos:6.7
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd youj
RUN /bin/echo 'youj:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" > /etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
但build時,會出現
=> ERROR [2/5] RUN /bin/echo 'root:123456'
請問,在dockerfile 中,要如何寫?
謝謝!
==========補上圖片
你試過在 Dockerfile 裡面寫雙引號嗎?...
https://docs.docker.com/engine/reference/builder/#run
您好:
依樣錯誤
[+] Building 1.8s (5/8)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 328B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/centos:6.7 1.2s
=> CACHED [1/5] FROM docker.io/library/centos:6.7@sha256:4c952fc7d30ed134109c769387313ab864711d1bd8b4660017f9d27 0.0s
=> ERROR [2/5] RUN /bin/echo "root:123456" |chpasswd
好, 我終於注意到, 你第一張圖最後一行小字的 Exit code 是 139.
這代表他連啟動都失敗, 所以其實還沒執行到 RUN echo 就掛了
139 這個問題通常會發生在:
舊版的 Kernel (例如:Centos 6.x) + WSL 兩者組合, 在此情境下, 你得開啟 WSL 裡面的 vsyscall 模擬功能, 讓比較舊的 Centos 6 使用, 他才能正常啟動.
解法, 新增 WSL 的 vsyscall=emulate 參數, 然後重啟 WSL 和 Docker:
https://stackoverflow.com/questions/65429435/docker-fails-to-build-image-with-exit-code-139/65429436#65429436
完整的 WSL 參數說明:
https://docs.microsoft.com/zh-tw/windows/wsl/wsl-config
或者你不想改 WSL, 那換成 Centos 7 以上的 Image 就不會遇到這個問題
(不過, 你的 RUN echo 後面還是要用雙引號, 因為單引號在 Dockerfile 的 RUN 指令裡面會造成資料傳遞錯亂)
您好: 謝謝!