c/c++语言开发共享详解如何用alpine镜像做一个最小的镜像并运行c++程序

需求工作中我们如果要制作镜像,一般都是直接pull官方镜像,比如我们要运行一个c++程序我们可能直接pull一个gcc,或者ubuntu镜像就可以了,但是存在一个问题,我们只是要运行一个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++程序内容请搜索<计算机技术网(www.ctvol.com)!!>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<计算机技术网(www.ctvol.com)!!>!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/597255.html

(0)
上一篇 2021年5月8日
下一篇 2021年5月8日

精彩推荐