Docker+C言語の実行環境は軽量なAlpine Linuxが良い

@Panda_Program

簡単に開発環境を整えることができるDocker。ベースイメージにAlpineを使うと簡単に環境を構築できる。

イメージのサイズ比較

イメージが超軽量なのでpullする時間が短い。 参考にgcc, ubuntuのイメージとサイズを比較。

REPOSITORY   TAG      IMAGE ID       CREATED       SIZE
gcc          8.2.0   1d6ec261d687   2 weeks ago   1.68GB
ubuntu       18.04   cd6d8154f1e1   2 weeks ago   84.1MB
alpine       3.8     196d12cf6ab1   12 days ago   4.41MB

gccは1.68G、ubuntuは84.1MBなのに対して、alpineは4.41MBと圧倒的に軽い。 docker pullする時間が一瞬なのでストレスフリー。

Dockerfileの構成

C言語のファイルをgccでコンパイルする場合、DockerfileはこれだけでOK。

FROM alpine:3.8

RUN apk add --no-cache gcc libc-dev

C言語で書いたローカルファイルをコンテナに置くためには、 DockerfileにCOPYコマンドを追加する、或いはdocker run時に-vオプションでディレクトリをマウントする。

コンテナ作成&コンパイル例

「Hello World」を出力するファイルをコンパイルする。

#include <stdio.h>

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

ディレクトリ構成は以下のようにする。

├── Dockerfile
└── sample_program
    └── hello.c

イメージをbuildし、コンテナを立ち上げる。その後、コンテナに入りgccコマンドでコンパイルする。

$ docker build -t alpine:exec-c .
$ docker run -v "$PWD"/sample_program:/home --rm -ti alpine:exec-c
6a333c246e82:# cd /home
6a333c246e82:# gcc hello.c
6a333c246e82:# ./a.out
Hello world

簡単にC言語の環境構築ができました!

Happy Coding 🎉

パンダのイラスト
パンダ

記事が面白いと思ったらツイートやはてブをお願いします!皆さんの感想が執筆のモチベーションになります。最後まで読んでくれてありがとう。

  • Share on Hatena
  • Share on Twitter
  • Share on Line
  • Copy to clipboard