DockerでC 言語の開発環境を構築する

DockerでC 言語の開発環境を構築 Docker

Docker コンテナを利用することで、C 言語の開発環境を簡単に用意できます。

この記事では、以下の環境でDocker コンテナにC 言語の開発環境を用意する手順について説明しています。

実行環境

Windows 11+Docker Desktop+WSL2(Ubuntu)環境で、VS Codeのターミナルを利用する。

Docker Desktopインストール

Dockerの公式サイトよりDocker Desktopインストーラーをダウンロードし実行する。
利用規約への同意など画面に従いインストールを完了後、サインインする。

Docker Desktop起動後、設定画面「Resources」>「WSL Integration」の「Enable WSL integration」にチェックをする。

WSL2(Windows Subsystem for Linux)にUbuntuをインストール

WSL を使用して Windows に Linux をインストールする方法を参考にLinux ディストリビューション(この記事ではUbuntu)をインストールする。

「Enabled distributions」セクションのEnable integration with additional distros:Ubuntuのトグルをオンにする。

VS Code (Visual Studio Code)使用

VS Code に Remote – WSL 拡張をインストールしてターミナルで Ubuntu を操作する。

【参考】VS Codeインストール方法

  1. Visual Studio Code の公式ページにアクセスし、 「Download for Windows」ボタンをクリックしてインストーラをダウンロードする。
  2. 使用許諾契約への同意など画面に従いインストールを完了する。
  3. VS Code左サイドバーの拡張機能アイコンをクリックして、Remote – WSLを検索しインストールする。
  4. CTRL+Shift+PでコマンドパレットをWSLで検索し、WSL:WSLへの接続WSL:ディストリビューションを使用してWSLに接続行いをUbuntu選択する。
  5. VS Codeの左下に緑色の接続インジケーターが、WSL: Ubuntuとなっていることを確認する。

C 言語の開発環境を構築する

WSL2 と Docker Desktop の連携確認

VS Codeターミナル画面で、dockerコマンドを実行して使えることを確認する。

作業ディレクトリの作成

以下の作業ディレクトリを作成する。

Dockerfile の作成

c-dev-docker/ディレクトリに、developer(UID/GID=1000)ユーザーを作成し、gcc/make/gdb/vim/nano をインストールするDockerfileを作成する。

docker-compose.yml の作成

docker-compose を使って、developer ユーザーとしてコンテナを起動します。

Makefile の作成

通常ファイル(hello)とデバッグファイル(hello_dbg)を同時にビルドし、make clean で両方を削除するMakefileファイルをsrc/ディレクトリに作成します。

C言語 サンプルプログラムの作成

src/ディレクトリに、Hello, Docker C World!を表示するだけのサンプルプログラム(hello.c)を以下の内容で作成します。

ここまでの作業で、ファイルディレクトリ構成は、下記の様になっています。

イメージのビルドとコンテナの起動

docker-compose.ymlとDockerfileに従って、イメージファイル(c-dev:latest)をビルドします。

コンテナの起動

ビルドしたイメージを指定してコンテナを起動します。
コンテナ起動すると、コンテナ内のシェル(bash)が開きます。

Makefile でビルド

makeコマンドで、src/hello.c と src/hello.dbg が生成されます。

バイナリファイルの実行

バイナリファイルを実行すると、Hello, Docker C World!が表示されます。

デバッグ(GDB)

デバッグ版バイナリを直接使って GDB でステップ実行できます。

まとめ

これで、Windows 11+Docker Desktop+WSL2(Ubuntu)環境において、Docker コンテナ上に非 root ユーザーで Makefile による通常版・デバッグ版のビルドから実行までの作業を行いました。

あとは同じ手順でライブラリの追加やデバッグ環境の拡張も簡単に行えます。
余裕ができたら、色々と試してみましょう。

タイトルとURLをコピーしました