如何使用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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。