2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

簡単!!WSL2とDockerでデータベース環境構築

Posted at

開発環境を構築する中でデータベースは必ずと言ってもいいくらい必要になります。
WSL2のディストリビューションにDockerを入れると
とても簡単に短時間で安定したデータベース利用環境を構築することができたので、
今回は以前投稿したWSL2を利用したLinux開発環境にDockerをインストールして
データベースの環境を構築した際の手順をご紹介いたします。

構築するデータベースとしてはRDBの例としてMySQL、NoSQLの例としてRedisを構築していきます。

  • MySQL

  • Redis

前提条件

以下の記事に従ってWSL2を利用したLinux開発環境の環境が構築されていること。

実施環境

  • OS:Windows 10 Home バージョン 21H1
  • ディストリビューション:Ubuntu 20.04 LTS

(推奨)作業用ターミナルとしてはWindowsターミナルの使用をお勧めします。

Dockerのインストール

Dockerのインストール手順についてはdocker docsに手順が記載されているので、
基本的にはdocsの手順に従いインストールを進めていきます。

Docker Engine インストール

リポジトリのセットアップ

1. aptパッケージの更新

sudo apt-get update
sudo apt-get install \
   ca-certificates \
   curl \
   gnupg \
   lsb-release

2. GPG 鍵の追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

3. 安定版(stable)リポジトリのセットアップ

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

インストール

1. aptパッケージの更新

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Linux インストール後の作業

Docker管理のユーザ追加

ログインユーザにdockerコマンドの実行権限を付与してsodo無しでコマンド実行できるようにします。

1. dockerグループの作成

sudo groupadd docker

2. グループへのユーザ追加

sudo gpasswd -a $USER docker

※ docker docsではusermodコマンドを利用してグループ追加を行っていますが、破壊的なコマンドのため、ここではgpasswdコマンドを利用してユーザ追加を行います。

Docker自動起動設定

WSLを起動するたびにDockerを起動するのはとても煩わしいので自動起動設定を行います

serviceコマンドのsudo権限追加

visudoを使いsudoersファイルを更新してログインユーザにsudo権限を追加します。

1. visodo起動

sudo visudo

2. Dockerデーモン起動設定追記

最後の行に以下の設定を追加します。
※ XXXXXX部はユーザ名に置き換える

XXXXXX ALL=(ALL:ALL) NOPASSWD: /usr/sbin/service docker start
  • 入力例
    visudo_00.PNG

3. 保存

3.1. 編集終了

メニューに従い次のコマンドを入力して編集を終了します。

[Ctrl] + [X]
  • 表示メニュー
    visudo_01.PNG

3.2. 確認

メニューに従い次のコマンドを入力して設定を保存します。

[Y]
  • 表示メニュー
    visudo_02.PNG

3.3. 終了

ファイル名はそのままに次のコマンドを入力して保存します。

[Enter]
  • 表示メニュー
    visudo_03.PNG

Dockerデーモン起動設定

.bashrcの最後の行に以下の設定を追加します。

  • .bashrcの編集
vi .bashrc
  • 設定
if [ $(service docker status | awk '{print $4}') = "not" ]; then
  sudo service docker start > /dev/null
fi

設定反映

コマンドプロンプトを起動して次のコマンドを入力してwslをシャットダウンします。

wsl --shutdown

再度wslにログインすることでDockerデーモンが自動で起動しsudo無しでdockerコマンドが実行可能となります。

Dockerイメージの取得

Dockerイメージを取得してデータベース環境を構築していきます。
以下の手順ではイメージはDocker Hubより取得します。
Docker Hubにはイメージ取得(Pull)の回数制限があるため、
同一IPアドレス環境内でイメージ取得が頻繁に行われている場合、
上限に達している可能性があります。
その際にはDocker Hubに登録したユーザーでログインした上で実施する必要があります。
(無料ユーザでも可)

Redis環境構築

イメージ取得

次のコマンドを実行してRedisのイメージを取得します。

docker pull redis

イメージ起動

次のコマンドを実行してRedisのイメージを起動します。

docker run -it --name redis -d -p 6379:6379 redis:latest

コンテナ自動起動設定

次のコマンドを実行することでWSLを再起動した際にコンテナが自動で起動します。

docker update --restart=always redis

Redisコマンドラインインタフェースインストール

Redisのコマンドラインインタフェースであるredis-cliをインストールします。

redis-cliインストール

次のコマンドを実行してredis-cliをインストールします。

sudo apt install redis-server

接続確認

次のコマンドを実行して接続を確認します。

redis-cli

127.0.0.1:6379に接続され対話モードでCLI実行可能となれば構築完了です。

MySQL環境構築

イメージ取得

次のコマンドを実行してMySQLのイメージを取得します。

docker pull mysql

イメージ起動

次のコマンドを実行してMySQLのイメージを起動します。

docker run -it --name mysql -e MYSQL_ROOT_PASSWORD=mysql -d -p 3306:3306 mysql:latest

コンテナ自動起動設定

次のコマンドを実行することでWSLを再起動した際にコンテナが自動で起動します。

docker update --restart=always mysql

MySQLクライアントインストール

MySQLのクライアントをインストールします。

コマンド確認

次のコマンドを実行することでMySQLクライアントのインストールを促されます。

mysql

※ 2022年2月時点では次のコマンドが表示されます。

sudo apt install mysql-client-core-8.0     # version 8.0.27-0ubuntu0.20.04.1, or
sudo apt install mariadb-client-core-10.3  # version 1:10.3.32-0ubuntu0.20.04.1

インストール

次のコマンドを実行してMySQLクライアントをインストールします。

sudo apt install mysql-client-core-8.0

接続確認

次のコマンドを実行して接続を確認します。

mysql -u root -p -h 0.0.0.0 -P 3306

接続に成功し対話モードでCLI実行可能となれば構築完了です。

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?