アプリ関連ニュース

Docker for Windowsの「WSL Integration」エラーとその対処法

今回は、Docker for Windows を使用中に発生した「WSL Integration」関連のエラーと、その対処方法について共有したいと思います。

発生したエラー

先日、Docker コンテナを起動しようとしたところ、以下のエラーが表示され、再起動しても解消されませんでした。

WSL integration with distro 'Ubuntu' unexpectedly stopped. Do you want to restart it?
configuring docker in Ubuntu: docker cli config: failed to write file: exit status 2


前日までは問題なく動作していたため、WSL(Windows Subsystem for Linux)側が不安定になっているのではないかと考え、次のコマンドで WSL を一度シャットダウンしました。

wsl --shutdown


再び Docker Desktop を起動すると、今度は以下の別のエラーが発生しました。

WSL integration with distro 'Ubuntu' unexpectedly stopped. Do you want to restart it?
retrieving homedir for Ubuntu distro: getting home folder for Ubuntu distro: running echo $HOME in Ubuntu: sending to distro: write |1: The pipe is being closed.

再起動を試みてもコンテナの起動には至らず、Ubuntu 側の WSL 環境が壊れている可能性が考えられました。

WSL(Ubuntu)に直接ログインできるか確認

念のため、WSL 上の Ubuntu に直接ログインできるか確認してみました。

wsl -d Ubuntu

すると以下のように、正常にログインできました:

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)

linux@LAPTOP:/mnt/c/Users/nishida$

このことから、WSL 自体は正常に動作しており、Docker Desktop 側の連携に問題があると判断しました。

一時的な回避策:WSL Integration をオフにする

以下の手順で、WSL との連携を一時的に無効化してみました。

1. Docker Desktop を開く

2. Settings > Resources > WSL Integration に移動

3. 「Enable integration with my default WSL distro」のチェックを外す

4. Docker Desktop を再起動

この状態では WSL 経由での連携はできませんが、Docker コンテナの起動自体は可能で、開発作業も継続できることが確認できました。

・Windows 側(cmd、PowerShell、VSCode など)から docker CLI の利用は可能

・Vue.js プロジェクトのビルドも問題なし

→ただし、WSL(Ubuntu)内では docker コマンドが使用できません。

恒久的な対処:WSL バージョンを 2 にアップグレード

より根本的な解決策として、Ubuntu を WSL 1 → WSL 2 にアップグレードすることにしました。これは再インストール不要で、次のコマンドでアップグレード可能です:

wsl –set-version Ubuntu 2

変換後に再び Docker Desktop の設定画面へ行き、

Settings > Resources > WSL Integration にて
「Enable integration with my default WSL distro」にチェックを入れ直して保存。

この後は、エラーも表示されず、WSL との連携も正常に復旧しました。

同じようなエラーに遭遇した方の参考になれば幸いです。


参考リンク:
WSL 2 へのアップグレード方法(Microsoft)
https://learn.microsoft.com/ja-jp/windows/wsl/install


木曜日担当:nishida



iPhoneでマイナンバーカード

昨日6月24日からiOS18.5以降を搭載するiPhoneに
マイナンバーカードを登録できるようになったそうです。

続きを読む

Laravelの定数管理方法

今回は、Laravelにおける定数の管理方法を紹介したいと思います。
各方法とその特徴、用途を以下にまとめます。

.env ファイルを使用する方法(環境変数)

環境ごとに異なる値(APIキー、DB接続情報など)を .env ファイルで管理します。

使用例

API_KEY=abcd1234

コントローラ内などで以下のように使用します。

$apiKey = env('API_KEY');

特徴
環境ごとに値を切り替えやすい(本番・開発など)
APIパスワードなどセキュアな情報をコードにハードコーディングせずにenvファイルに記述をおこない、gitignoreでコミット対象からも除外しておく。
キャッシュされないので変更が即時反映される

config/const.php ファイルを使う方法

独自の設定ファイルを config/const.php のように作成し、アプリ全体で共有したい定数を定義する。

例:config/const.php


return [
    'status' => [
        'active' => 1,
        'inactive' => 0,
        'deleted' => -1,
    ],
    'user_roles' => [
        'admin' => 1,
        'user' => 2,
    ],
];

使用方法:

$status = config('const.status.active'); // 1

特徴
アプリ内の定数をまとめて管理できる
配列構造で柔軟に対応できる
Laravelの php artisan config:cache によって高速アクセスが可能

define() 関数で定義(グローバル定数)

例:
define(‘APP_VERSION’, ‘1.0.0’);

使用方法:
echo APP_VERSION;

特徴・注意点
グローバルスコープで使用できる
Laravelでは基本的に config や env で管理することが多い

Enum を使う(PHP 8.1以上)

概要
PHP 8.1以降で導入された enum を使って型安全な定数を定義できる。

例:
app/Enums/UserStatus.php


enum UserStatus: int {
    case Active = 1;
    case Inactive = 0;
    case Deleted = -1;
}

使用方法:

$status = UserStatus::Active;

特徴
型安全(間違った値の代入を防げる)

木曜日担当:nishida



スマホでローカルLLM-2

先週の記事でスマホ上でローカルLLMを試す内容の記事を書きましたが、
Googleからも同じようなアプリがリリースされました。
Google AI Edge Gallery というもので、
現在はAndroid向けにのみ提供されています。

続きを読む

Docker Desktopのコンテナ内でコマンドを実行する方法

今回はWindowsのDocker Desktopのコンテナ内でコマンドを実行する方法を紹介したいと思います。

1.Docker Desktopの起動をおこない、任意のコンテナを開始します。

2.コンテナ名を確認
以下のコマンドで現在起動しているコンテナの一覧が見られます。

docker ps

項目としては
CONTAINER ID、IMAGE、 COMMAND、NAMES が表示されますので、コマンドを実行したいコンテナのNAMEをメモしておきます。

3.コンテナ内でのコマンド実行方法
以下のようにコマンドを実行することができます。
※[NAME]箇所は上記で確認したコンテナのNAMEに書き換えます。

docker exec -it [NAME] ls

4.Laravelコンテナ内で artisan コマンドを実行するには、以下のように Docker の exec コマンドを使います。

docker exec -it [NAME] php artisan <コマンド>

よく使うartisanコマンド実行例

・Laravelのバージョン確認
docker exec -it [NAME] php artisan –version

・キャッシュクリア
docker exec -it [NAME] php artisan config:clear

・マイグレーション実行
docker exec -it [NAME] php artisan migrate

・シーディング実行
docker exec -it [NAME] php artisan db:seed

・サーバー起動(開発用)
docker exec -it [NAME] php artisan serve –port=8080

木曜日担当:nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム