注意 为简单起见,以下文件和命令,均在一个目录下执行

以下是c语言版本, go语言自行百度,差别就是编译时启用cgo和静态链接

一、准备docker环境

二、c语音编写helloworld

#include <stdio.h>

int main() {
    printf("Hello, World\n");
    return 0;
}

静态编译(一定要静态编译,否则会依赖动态库,导致报错 (no such file…))

gcc -static main.c 

如果报错 /usr/bin/ld: 找不到 -lc , centos 环境执行如下命令。

yum install glibc-static

Ubuntu如下:

sudo apt-get update
sudo apt-get install libc6-dev

三、编写Dockerfile文件

## cat Dockerfile

FROM scratch
ADD a.out /a.out
CMD ["/a.out"]

生成docker image

docker build -t hello:latest .

四、执行

docker run hello