Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。本文主要介绍Docker 安装及配置C/C++编译环境。

1、安装Docker

参考文档:

安装Docker

Docker 入门教程

2、C/C++的Docker镜像

镜像基于 Alpine Linux 镜像,只有 5MB 镜像,并且包含 C/C++ 编译器(gcc/g++ 包)。获取C/C++的docker镜像,有两种方式,一种是通过docker pull命令获取,另一种是通过Dockerfile文件创建,具体如下,

1)使用docker pull命令

使用docker pull命令获取https://hub.docker.com/中存储公共镜像,如下,

docker pull frolvlad/alpine-gxx

注意:使用docker run命令时,如果镜像本地不存会自动调用docker pull获取镜像。

2)使用Dockerfile文件创建

Dockerfile文件

FROM alpine:3.14
RUN apk add --no-cache gcc musl-dev
RUN apk add --no-cache g++

生成本地镜像:

docker build -t cjavapy/alpine-gxx .

3、C/C++的Docker容器

创建容器可以使用https://hub.docker.com/上的frolvlad/alpine-gxx镜像,也可以使用上面我们通过Dockerfile文件创建的本地镜像。

1)使用frolvlad/alpine-gxx镜像

$ echo -e '#include <iostream>\nint main() { std::cout << "Hello World\\n"; }' > sample.cpp
$ docker run --rm -v `pwd`:/tmp frolvlad/alpine-gxx c++ --static /tmp/sample.cpp -o /tmp/sample

2)使用cjavapy/alpine-gxx镜像

$ echo -e '#include <iostream>\nint main() { std::cout << "Hello World\\n"; }' > sample.cpp
$ docker run --rm -v `pwd`:/tmp cjavapy/alpine-gxx c++ --static /tmp/sample.cpp -o /tmp/sample

相关文档

Docker 构建自定义镜像和Dockerfile文件

Docker 容器使用的命令

推荐文档