Loading
  • LIGHT

  • DARK

ROUTE

ルートゼロの
アクティビティ

DockerでLinuxを効率学習|環境構築からエラー解決まで完全ガイド

2

導入

「Docker で Linux を学ぼう」と思って環境構築を始めたら、エラーだらけで心が折れた…。
そんな経験、ありませんか?

本記事では、2025 年最新版の Docker 環境を前提に、Linux 学習を効率的に進めるための手順やよくある落とし穴、そして実務に直結する活用例をまとめました。忙しい私たちエンジニアが「10 秒で解決の糸口を見つけられる」よう、コード例やエラーメッセージの対処法を中心に解説していきます。

(Dockerの基本については『Dockerとは?初心者向け:基礎から実践まで完全ガイド』をご参照ください)

「Docker で Linux を学びたいけど、どこから手を付ければいいかわからない」
「業務に活かせるレベルで理解したい」

(Linuxの基本操作については『Linux Shellの基本と使い方|初心者向けコマンド一覧とエラー解決法』をご参照ください)

そんなあなたのモヤモヤを、一緒に解決していきましょう。


Docker のインストール

  1. Docker Desktop のインストール
    Docker がインストールされていない場合は、公式サイトからインストールしましょう。

(Docker Desktopの詳細な使い方については『Docker + Spring Boot で手軽に開発環境を構築しよう!』をご参照ください)

用語解説:Docker Desktop
Windows や macOS 上で Docker を簡単に利用できる公式アプリケーション。GUI を通じてコンテナの管理が可能です。


フォルダ構成

まずは、以下のようなフォルダ構成を準備してください。

project/
├── docker-compose.yml
├── sample_dir/
│ └── example_file.txt
└── data/
  • docker-compose.yml: コンテナの設定を記述するファイルです。

  • sample_dir/: ホストとコンテナ間でファイルを共有するディレクトリです。

  • data/: MySQL のデータを永続化するためのディレクトリです。


docker-compose.yml の中身

以下の内容を docker-compose.yml に記述します。

version: '3.8'
services:
  sample:
    image: mysql:5.7
    container_name: sample
    volumes:
      - sample_data:/var/lib/mysql
      - ./sample_dir:/home
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root@password1
      MYSQL_DATABASE: sample
      MYSQL_USER: sample_user
      MYSQL_PASSWORD: sample_password
      TZ: 'Asia/Tokyo'
    ports:
      - '3307:3306'
volumes:
  sample_data:
    driver: local

コンテナの立ち上げ

  1. フォルダ構成を準備
    上記のフォルダ構成を作成し、docker-compose.yml を配置します。

  2. Docker Compose コマンドを実行
    以下のコマンドを実行してコンテナを立ち上げます。

    docker-compose up -d
    • -d オプションは、バックグラウンドでコンテナを実行するためのものです。

  3. コンテナの状態を確認
    コンテナが正常に起動しているか確認しましょう。

    docker ps

    出力例:

    CONTAINER ID IMAGE COMMAND STATUS PORTS
    abc12345 mysql:5.7 "docker-entrypoint.s…" Up 5 minutes 0.0.0.0:3307->3306/tcp

コンテナにログイン

  1. MySQL コンテナに接続
    以下のコマンドでコンテナにログインします。

    docker exec -it sample bash
  2. MySQL にログイン
    コンテナ内で以下のコマンドを実行してMySQLにログインします。

    mysql -u sample_user -p

    パスワードを求められたら、sample_password を入力してください。

  3. データベースの確認
    ログイン後、以下のコマンドでデータベースが作成されていることを確認しましょう。

    SHOW DATABASES;

    出力例:

    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | sample             |
    +--------------------+

✅ Volume の同期を試してみる

  1. /home フォルダ内の操作
    コンテナ内で /home フォルダにファイルやフォルダを生成すると、ホスト側の sample_dir/ に同期されます。

    touch /home/new_file.txt
    mkdir /home/new_folder
    • この操作により、ホスト側の sample_dir/new_file.txtnew_folder が作成されます。

  2. ホスト側での操作
    ホスト側で sample_dir/ にファイルを作成すると、コンテナ内の /home に即座に反映されます。

    echo "Hello, Docker!" > sample_dir/hello.txt
    • コンテナ内で確認してみましょう。

      cat /home/hello.txt
  3. 同期の確認
    コンテナ内とホスト側でファイルが正しく同期されているか確認するには、以下のコマンドを使用します。

    ls /home
    • ホスト側:

      ls sample_dir

    これで、同期が正しく機能していることを確認できましたね。


トラブルシューティング

  1. Docker のコンテナを終了する方法
    以下のコマンドでコンテナを停止します。

    docker-compose down
    • 特定のコンテナのみを停止したい場合は、以下のコマンドを使用します。

      docker stop sample
  2. コンテナ内でコマンドが見つからない場合
    コンテナ内で特定のコマンドが見つからない場合、以下の手順でインストールしてください。

    apt-get update && apt-get install -y [パッケージ名]
    • 例: MySQL クライアントをインストールする場合

      apt-get update && apt-get install -y mysql-client
  3. ポート競合エラー
    以下のようなエラーが発生する場合があります。

    Bind for 0.0.0.0:3307 failed: port is already allocated

    対処法: `docker-compose.yml` の ports セクションで別のポート番号を指定してください。

    例:

    ports:
      - '3308:3306'
  4. 権限エラー
    以下のようなエラーが発生する場合があります。

    Permission denied

    このエラーは、ファイルやディレクトリに対するアクセス権限が不足している場合に発生します。特に、Docker コンテナ内でホスト側のディレクトリをマウントしている場合に頻発します。

    対処法: 以下のコマンドで権限を変更してください。

    chmod 755 [対象ディレクトリ]

    このコマンドは、ディレクトリに対して必要最低限の権限を付与します。セキュリティリスクを最小限に抑えるため、chmod -R 777 の使用は避けてください。

    また、権限エラーが頻発する場合は、以下の点を確認してください。

    • ホスト側のディレクトリが正しいユーザー権限で設定されているか。
    • Docker コンテナを実行しているユーザーが適切な権限を持っているか。
    • 必要に応じて、sudo コマンドを使用して権限を変更する。

ぜひ、このガイドを参考にDockerを活用して、効率的にLinuxを学び、実務に役立つスキルを身につけてください。

RANKINGranking-icon

LATEST POSTS

もっとルートゼロを知りたいなら

DISCOVER MORE