導入
「Docker で Linux を学ぼう」と思って環境構築を始めたら、エラーだらけで心が折れた…。
そんな経験、ありませんか?
本記事では、2025 年最新版の Docker 環境を前提に、Linux 学習を効率的に進めるための手順やよくある落とし穴、そして実務に直結する活用例をまとめました。忙しい私たちエンジニアが「10 秒で解決の糸口を見つけられる」よう、コード例やエラーメッセージの対処法を中心に解説していきます。
(Dockerの基本については『Dockerとは?初心者向け:基礎から実践まで完全ガイド』をご参照ください)
「Docker で Linux を学びたいけど、どこから手を付ければいいかわからない」
「業務に活かせるレベルで理解したい」
(Linuxの基本操作については『Linux Shellの基本と使い方|初心者向けコマンド一覧とエラー解決法』をご参照ください)
そんなあなたのモヤモヤを、一緒に解決していきましょう。
Docker のインストール
-
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
コンテナの立ち上げ
-
フォルダ構成を準備
上記のフォルダ構成を作成し、docker-compose.yml
を配置します。 -
Docker Compose コマンドを実行
以下のコマンドを実行してコンテナを立ち上げます。docker-compose up -d
-
-d
オプションは、バックグラウンドでコンテナを実行するためのものです。
-
-
コンテナの状態を確認
コンテナが正常に起動しているか確認しましょう。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
コンテナにログイン
-
MySQL コンテナに接続
以下のコマンドでコンテナにログインします。docker exec -it sample bash
-
MySQL にログイン
コンテナ内で以下のコマンドを実行してMySQLにログインします。mysql -u sample_user -p
パスワードを求められたら、
sample_password
を入力してください。 -
データベースの確認
ログイン後、以下のコマンドでデータベースが作成されていることを確認しましょう。SHOW DATABASES;
出力例:
+--------------------+ | Database | +--------------------+ | information_schema | | sample | +--------------------+
✅ Volume の同期を試してみる
-
/home
フォルダ内の操作
コンテナ内で/home
フォルダにファイルやフォルダを生成すると、ホスト側のsample_dir/
に同期されます。touch /home/new_file.txt mkdir /home/new_folder
-
この操作により、ホスト側の
sample_dir/
にnew_file.txt
とnew_folder
が作成されます。
-
-
ホスト側での操作
ホスト側でsample_dir/
にファイルを作成すると、コンテナ内の/home
に即座に反映されます。echo "Hello, Docker!" > sample_dir/hello.txt
-
コンテナ内で確認してみましょう。
cat /home/hello.txt
-
-
同期の確認
コンテナ内とホスト側でファイルが正しく同期されているか確認するには、以下のコマンドを使用します。ls /home
-
ホスト側:
ls sample_dir
これで、同期が正しく機能していることを確認できましたね。
-
トラブルシューティング
-
Docker のコンテナを終了する方法
以下のコマンドでコンテナを停止します。docker-compose down
-
特定のコンテナのみを停止したい場合は、以下のコマンドを使用します。
docker stop sample
-
-
コンテナ内でコマンドが見つからない場合
コンテナ内で特定のコマンドが見つからない場合、以下の手順でインストールしてください。apt-get update && apt-get install -y [パッケージ名]
-
例: MySQL クライアントをインストールする場合
apt-get update && apt-get install -y mysql-client
-
-
ポート競合エラー
以下のようなエラーが発生する場合があります。Bind for 0.0.0.0:3307 failed: port is already allocated
対処法: `docker-compose.yml` の
ports
セクションで別のポート番号を指定してください。例:
ports: - '3308:3306'
-
権限エラー
以下のようなエラーが発生する場合があります。Permission denied
このエラーは、ファイルやディレクトリに対するアクセス権限が不足している場合に発生します。特に、Docker コンテナ内でホスト側のディレクトリをマウントしている場合に頻発します。
対処法: 以下のコマンドで権限を変更してください。
chmod 755 [対象ディレクトリ]
このコマンドは、ディレクトリに対して必要最低限の権限を付与します。セキュリティリスクを最小限に抑えるため、
chmod -R 777
の使用は避けてください。また、権限エラーが頻発する場合は、以下の点を確認してください。
- ホスト側のディレクトリが正しいユーザー権限で設定されているか。
- Docker コンテナを実行しているユーザーが適切な権限を持っているか。
- 必要に応じて、
sudo
コマンドを使用して権限を変更する。
ぜひ、このガイドを参考にDockerを活用して、効率的にLinuxを学び、実務に役立つスキルを身につけてください。