iT邦幫忙

0

docker 撰寫centos 的dockerfile ,root chdpasswd 的寫法

  • 分享至 

  • xImage

您好:
參考
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 中,要如何寫?

謝謝!

==========補上圖片
https://ithelp.ithome.com.tw/upload/images/20220731/201040953wSljW6hp6.png

增廣建文 iT邦研究生 5 級 ‧ 2022-07-31 08:10:54 檢舉
完整的error message?
noway iT邦研究生 1 級 ‧ 2022-07-31 21:18:59 檢舉
您好:我有補上圖片
謝謝
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
Ray
iT邦大神 1 級 ‧ 2022-08-01 11:10:47
最佳解答

你試過在 Dockerfile 裡面寫雙引號嗎?...
https://docs.docker.com/engine/reference/builder/#run

noway iT邦研究生 1 級 ‧ 2022-08-02 21:19:11 檢舉

您好:
依樣錯誤

[+] 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
Ray iT邦大神 1 級 ‧ 2022-08-03 01:33:19 檢舉

好, 我終於注意到, 你第一張圖最後一行小字的 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 指令裡面會造成資料傳遞錯亂)

noway iT邦研究生 1 級 ‧ 2022-08-08 21:41:11 檢舉

您好: 謝謝!

我要發表回答

立即登入回答