Docker+C言語の実行環境は軽量なAlpine Linuxが良い
ソフトウェアエンジニアのための問答ラジオ
パンダとおくだが、Web業界の当たり前を「これって本当にそうだっけ?」と問い直すラジオを配信しています
簡単に開発環境を整えることができる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言語の環境構築ができました!