Dockerはいいぞ – 導入編

docker

沖縄チームのキリです。開発中のプロジェクトの実行環境はどのように用意しているでしょうか。私はこれまでXAMPPで動かしたりCygwinを入れてみたりVirtualBoxにLinuxの仮想環境を作ってChef(今検索したら公式サイトにアクセスできなくなっていました)、Ansibleといったプロビジョニングツールで仮想サーバーを構築したりと様々な手段を試してきましたが、現在ではDockerに落ち着きました。

他のツールと比較して

Dockerの何がいいのか、というのを簡潔にいうと

  • 動作が軽快
  • ソフトウェアバージョンの固定・変更がしやすい
  • 複数人で同じ環境を容易に用意できる
  • 実行環境を破壊しても簡単に復元できる

このあたりに尽きます。あっちのプロジェクトとこっちのプロジェクトで、あるいはAさんとBさんの環境でPHPのバージョン違うぞ!のような状況を解決してくれます。個人的な意見としてwindowsにあれこれインストールしてごちゃつくのがイヤ、コマンドプロンプト、PowerShellよりもBashの方が使いやすい、そもそもwindowsとLinux/mac間の相性が良くないのでmacユーザーや実際のサーバーとの差が気になるなどなどもあります…

Dockerをwindowsに導入する

とりあえずサクッと動かせる環境を用意しましょう。社内でDockerを広めるのが私の密かな目標です。

WSLを有効化

WSLが既に有効になっている場合は飛ばしてください。windows上でももちろんDockerを動かせますがwindowsでウェブサービスを開発するならWSL使わない選択肢は無いと思っています。なぜなら実際にウェブサービスをデプロイするのはLinuxサーバー上であることがほとんどだからです。一昔前はWSLを有効化するのも少し手順が必要でしたが今はコマンド一発です。PowerShellを管理者権限で開いて以下のコマンドを実行してください。

wsl --install

ただしインストール方法が今後変わらない保証はないので必ず公式のドキュメントを参照してください。

https://learn.microsoft.com/ja-jp/windows/wsl/install

デフォルトではwindowsアプリにUbuntuがインストールされます。初期設定は公式のベストプラクティス(https://learn.microsoft.com/ja-jp/windows/wsl/setup/environment#set-up-your-linux-username-and-password)を参考にLinuxユーザーの作成を行い、sudo apt update && sudo apt upgradeコマンドを実行してパッケージを最新の状態に更新してください。デフォルトでWSLのパッケージは自動で更新されないのでパッケージを更新する際にはこのコマンドを都度実行します。

パスワードなしでsudoコマンドを実行できるようにする

sudoコマンドを実行したときにパスワードの入力を求められましたか?WSLで開発をしていると案外ここがストレスになってきます。本番環境等ではセキュリティを考慮してユーザー権限の設定をする必要がありますがローカルマシンのWSL上でガチガチに固める必要はないかと思っています。(不特定多数で1台のwindowsを共有して開発しているような状況はあまり考えられないので…)なのでsudoコマンドをパスワードなしで実行できるように設定していきましょう。

デフォルトエディタの設定

sudoコマンドの設定をする際にはvisudoコマンドを実行しますが、そのときに開かれるエディタのデフォルトはnanoエディタになっています。私はCUIでのエディタは普段Vimを使っている(nanoエディタの使い方がわからない)ためデフォルトのエディタをVimに変更します。vimコマンドが実行できない場合はsudo apt install -y vimコマンドでインストールしておきましょう。お好みでNeovimを入れてもいいかもしれません。

sudo update-alternatives --config editor

コマンドを実行すると使用可能なエディタの一覧が表示されます。

sudo update-alternatives --config editor の実行結果画面
使用可能なエディタの一覧

使用したいエディタの番号を入力して(ここではvim.basicを使いたいので4)Enterで確定します。

sudoの設定を変更する

visudoコマンドを使う、あるいは/etc/sudoers.d以下に設定ファイルを配置することでsudoの設定を変更することができます。visudoを使う場合は設定に誤りがあった場合設定ファイルが上書きされず安全に設定変更を行えるためそちらで設定します。

visudo実行画面

このような画面が表示されます。vimの場合Goと入力してファイルの末尾にカーソルを移動してインサートモードに入り、設定を追加します。一応補足しておきますと大文字のGでファイル末尾に移動し小文字のoで次行を挿入してインサートモードに入ります。(vimの操作については検索してください…)

[username] ALL=(ALL) NOPASSWD: ALL

[username]の部分は今現在ログインしているユーザー名を入力してください。<ESC>:qwと入力するとファイルを保存して終了します。これでsudoコマンドをパスワードなしで実行できるようになります。

Docker Desktopのインストール

いよいよDockerをインストールします。MicroSoftのドキュメントがわかりやすくて確実だと思います。

https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-containers#install-docker-desktop

インストールと設定が終わったらUbuntu上でdocker run hello-worldコマンドを実行してみましょう。以下のようにHello from Docker!のメッセージが表示されていれば成功です。

docker run hello-world実行画面

Dockerを導入して動作が確認できたところで今回はここまでにしておきます。Dockerコマンドだけでも仮想環境を動かせますが、次はdocker-composeを使ってDockerコンテナを管理するための記事を書きたいと思ってます。それでは。