1. 程式人生 > 程式設計 >詳解如何用alpine映象做一個最小的映象並執行c++程式

詳解如何用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++程式的文章就介紹到這了,更多相關alpine映象c++程式內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!