SAKURUG TECHBLOG

Dockerの開発環境を構築してみたい

timestampauthor-name
Ryo

初めに

こんにちわ。
少し前から、【webエンジニアの教科書】という書籍を使った学習をしていて、まず初めにDockerを使った開発環境の構築にとりかかりました。そこで、自分が書籍から学習したことに加えて書籍では解説されていなかった用語や細かい部分に自分なりの解釈などを加えてDockerの環境構築の最も基礎的な部分についてまとめてみたいと思います。

Dockerとは

  • アプリケーションの実行に必要なファイルやディレクトリ構造ミドルウェアや環境変数などを一つの「コンテナ」としてまとめる。
  • Dockerイメージを用意することで何度でも同じコンテナを作成できるため誤って開発環境を壊してしまっても壊れた環境を破棄して新しいコンテナを実行する。

これを利用し、検証の難しいフレームワークやミドルウェアのアップデートなどを安全に行うことなどを可能とするもの。
また、Dockerイメージを開発チームに共有することで、各開発者のローカル環境の差に左右されずに開発を進めることが可能。

Dockerには高い移植性があり、Dockerがインストールされている環境であればローカル・サーバー上でも同じ環境を作ることが可能。これにより、「テスト環境では動いたのに本番環境で動かない」というケースを減らすことが期待できる。
この時点では「開発環境の準備が簡単になるプラットフォーム」程度に認識しておけばOK。

Dockerを導入した開発の具体的なメリット

開発で使っている フレームワーク(例:Rails、Djangoなど)やミドルウェア(例:MySQL、Redisなど) をアップデートすると、以下のような問題が起きがち。

  • 今まで動いていたコードが動かなくなる
  • 設定ファイルの書き方が変わってしまう
  • 古いバージョンとの互換性がなくなる

つまり「アップデートしたら壊れた」「元に戻したいけど戻せない」ということが起こりやすい。

失敗してもすぐ捨てられる

Dockerコンテナは「一時的な実行環境」なので、アップデートして壊れても docker rm で簡単に削除できる。
Dockerにおけるファイル・イメージ・コンテナの関係を飲食チェーンに例えると

  • Docker Hub
    • チェーン店の本社。調理の総合的なマニュアル(Dockerfile)など管理・配布している。
  • Dockerfile
    • キッチンのセッティングや使用する調理器具、食材などを記した総合マニュアル。
  • イメージ
    • ファイルを基にセッティングされ、レシピ・調理器具・食材などがそろったキッチン。
  • コンテナ
    • 調理人。調理するキッチン(イメージ)が同じなら、複数の調理人(コンテナ)で同じ料理を複数同時に別々のテーブルに提供可能。

調理人が変わっても使用するキッチン・マニュアル・レシピ・食材が同じならどこでも同じ味が味わえるし、仮に調理に失敗しても、レシピや食材があれば新しいものをすぐに作れるというような考え方。

 具体例:ミドルウェアのアップデート検証

たとえば、次のようなケースをした場合。
「Redis 6 を使っていたが、Redis 7 にアップデートしたい。でも互換性があるか不安」

  • Docker なしの場合:
    • 自分のPCでRedis 7を直接インストール → 動かない → 元に戻すのが面倒

  • Docker ありの場合:
    • docker run redis:7 で別環境を立てて確認 → 問題なければ移行 → 問題あれば削除してやり直し

Docker を使うと、「本番環境を壊すことなく、ミドルウェアやフレームワークの新しいバージョンを気軽に試せる」ようになる。

※redis:「データを非常に高速で読み書きできるメモリ上のデータベース」

Docker環境の構築

DockerはLinuxカーネルの機能をベースに開発されているため、Linuxがインストールされている環境でしか動作しない。
Windows上で内部的にLinuxディストリビューションを稼働させてWindows上でもネイティブなDockerの機能を使うことができるDocker Desktopというツールがある。
Docker Desktopには利用条件があり、開発や企業の規模によっては有料サブスクリプションが必要なことも。

WSL2のインストール(windowsのみ)

そもそもWSL2とは

DockerとはLinuxカーネルの機能が使える環境が必要。WindowsにはLinux仮想マシンを快適に使えるための仕組みが用意されており、その仕組みの名前がWSL2(Windows Subsystem for Linux 2)。
これを導入することで、DockerなどのLinuxカーネルの機能を必要とするアプリケーションがWindows上でネイティブで動かせる。

Mac OSではDocker Desktopが内部でLinux仮想マシンを自動で動かしてくれるので、特別な準備無しでDockerDesktopが実行できる。

PowerShellを「管理者として実行」

wsl --installを実行

wsl --install


wsl --install は「とりあえずUbuntu入りでWSLを始める」コマンド。
wsl --install -d ディストリ名 で「Ubuntu以外にも任意のLinuxディストリを指定してインストール」できる。


インストール後、コンピューターの再起動を要求されるので再起動。
Ubuntuが自動的に起動するので、WSL上のUbuntu環境にログインするためのユーザー名とパスワードを設定し、アカウントを作成。

ユーザー名に使える文字はアルファベット小文字、数字、アンダースコアのみ。また、先頭にハイフンは使用不可。

※ディストリビューションとはLinuxカーネル + 各種ソフト + 設定 + サポートをまとめてパッケージ化した、ひとつの「完成されたOS環境」のこと。
・ファイル操作ツール(ls, cp, rm)
・パッケージ管理(apt, yum)
・テキストエディタ(vim, nano)
・GUIやネットワークツール
・標準的な設定や構成
など、全部を組み合わせてとまとめて提供してくれるパッケージを指す。
Ubuntuは、そのLinuxディストリビューション(パッケージ)の1つの名称


※Linuxカーネルについて
Linux カーネルとは | Red Hat

Ubuntuのユーザー名とパスワードの確認方法
PowerShellを起動し以下のコマンドでディストリ名を指定してWSLを起動。

wsl -d ディストリ名


もしディストリ名が分からないときは、

wsl -l


で確認できる。

また、ディストリ名を省略して

wsl


のみでもデフォルトのディストリビューションを起動できる。

WSLが起動したら以下のコマンドを実行。

whoami


出力された文字列が現在ログインしているユーザー名

パスワード変更の方法

Ubuntuのターミナルで以下を実行。

passwd


その後、以下の内容を入力

Current password:(今のパスワード)
New password:(新しいパスワード)
Retype new password:(もう一度)


入力後、password updated successfully と出れば成功。

現在のパスワードを忘れたときの救済策

wslを起動を起動中であればlogoutコマンドなどでいったんログアウトし、以下を実行してrootとしてwslを起動。

wsl -d ディストリ名 -u root 


ディストリ名の部分は、自分の環境のディストリ名に置き換える。

Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定値)
docker-desktop


このように出力されたらUbuntuがLinuxディストリビューション名

rootとしてログインしたらUbuntuのターミナルで以下を実行。

passwd ユーザー名 


あたらしいパスワードを2回入力すれば再設定完了。

ユーザー権限の確認

ついでに現在のアカウントがsudoコマンドが実行できるか(管理者権限を持っているか)を確認。
buntuのターミナルで以下を実行。

groups
username sudo dockern


のようにsudoという文字列が含まれていればそのユーザーはsudo権限あり。

もし権限がなければPowerShellを起動し、 以下を実行。

wsl -d ディストリ名 -u root


rootでログインしたらUbuntuのターミナルで以下を実行。

usermod -aG sudo ユーザー名 


PowerShellで以下を実行。

wsl --shutdown
wsl -d ディストリ名


再度Ubuntuのターミナルで以下を実行。

groups
username sudo dockern


というようにsudoという文字列を含む結果が出力されればユーザーへのsudo権限の付与は成功。
PowerShellを終了すればrootでのログイン状態が解除される。

Docker Desktopのインストール

WSL2の実行環境が整ったらDocker Desktopのインストール
公式サイトからインストーラをダウンロード

windows:

https://docs.docker.com/desktop/setup/install/windows-install/

Mac:

https://docs.docker.jp/desktop/install/mac-install.html

インストール時の設定で「Use WSL 2 instead of Hyper-V(recommended)」がONになっていることを確認。(項目がなければスルーでOK)
インストール後はWindowsを再起動し、Docker Desktopが自動で起動されればインストール成功。

ここまでで一番基礎的なDockerのインストールやユーザー設定は完了です。
機会があれば、実際にDockerの操作方法などの記事も書ければと思います。

株式会社SAKURUGのAdvent Calendar 2025です。

会社HP: https://sakurug.co.jp

ーーーーーーーーーー
株式会社SAKURUGは「寄付月間2025」に参画しています。
12月中のテックブログのpv数に応じて、アフリカの支援団体に寄付をおこないます。
https://giving12.jp/
ーーーーーーーーーー

▼高校生向けインターン実施中!

弊社では高校生向けにインターンを行っております!
現役エンジニア指導の下、一緒に働いてみませんか?

高校生インターン応募フォーム

▼カジュアル面談実施中!

カジュアル面談では、会社の雰囲気や仕事内容についてざっくばらんにお話ししています。
履歴書は不要、服装自由、原則オンラインです。興味を持っていただけた方は、
ぜひ以下からお申し込みください。

皆さんにお会いできることをサクラグメンバー一同、心より楽しみにしております!

カジュアル面談応募フォーム

記事をシェアする

ABOUT ME

author-image
Ryo
HTML/CSSコーダー 最近はフロントエンドエンジニア寄りの知識を身に着けるべくjavascript、WordPressを使ったコンテンツ管理の学習中