如何使用alpine鏡像運行c++程序?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
需求
工作中我們如果要制作鏡像,一般都是直接pull官方鏡像,比如我們要運行一個c++程序我們可能直接pull一個gcc,或者ubuntu鏡像就可以了,但是存在一個問題,我們只是要運行一個c++程序卻要運行一個ubuntu系統,這是非常消耗資源的,所以就去網上搜了搜發現早期的docker都是使用alpine鏡像來做基礎鏡像,所以就用alpile鏡像來制作鏡像
dockerfile
FROM alpine:3.7 MAINTAINER Rethink #更新Alpine的軟件源為國內(清華大學)的站點,因為從默認官源拉取實在太慢了。。。 RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories RUN apk update \ && apk upgrade \ && apk add --no-cache bash \ bash-doc \ bash-completion \ && rm -rf /var/cache/apk/* \ && /bin/bash COPY a.out /bin CMD ["./a.out"]
問題:
a.out是我在宿主機上編譯的一個可執行程序,但是新生成的鏡像是啟動不了的,這就讓我很奇怪
改進:
后來想了想./a.out之所以不能夠運行是因為a.out是在我自己的ubuntu系統上編譯出來的,而我的鏡像確實alpine鏡像,所以解決這個文件就很簡單了
方法一:
在ubuntu宿主機上下載交叉編譯工具,使用交叉工具編譯我們的源碼,生成可執行程序
方法二:
我們可以偷個懶直接使用docker pull一個安裝了apline-gcc鏡像,在上面編譯好我們的源碼,將生成的可執行程序放到apline鏡像就可以了
方法三:
我們可以在alpine鏡像中使用源碼進行編譯
方法三 dockerfile
FROM alpine:3.7 MAINTAINER Rethink #更新Alpine的軟件源為國內(清華大學)的站點,因為從默認官源拉取實在太慢了。。。 RUN echo "https://mirror.tuna.tsinghua.edu.cn/alpine/v3.4/main/" > /etc/apk/repositories RUN apk update \ && apk upgrade \ && apk add --no-cache bash \ bash-doc \ bash-completion \ && rm -rf /var/cache/apk/* \ && /bin/bash RUN apk add gcc RUN mkdir /chun COPY hello.c /chun WORKDIR /chun/ RUN gcc hello.c CMD ["./a.out"]
看完上述內容,你們掌握如何使用alpine鏡像運行c++程序的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。