プログラミングをするにあたって環境構築が面倒になってきたので、Dockerを利用したいと思います。Dockerを使うことによって、環境の構築と破棄が簡単になり、本番に近い環境を構築するのが楽になります。
また、トラブルがあったとき面倒なので、仕事で使っているパソコンにXAMPPをインストールしたくありません。そこで、WSL2のDebianにDockerをインストールして、Windowsからは隔離された状態での環境構築を目指します。
Dockerのインストール
ここ(https://docs.docker.com/engine/install/debian/)を参考にWSL2のDebianを立ち上げて、Dockerをインストールします。
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
sudo service docker start
エラー(fstabファイル)
Dockerをインストールして起動させると、こんな感じで、何故かエラーがでます。
$ sudo service docker start
grep: /etc/fstab: No such file or directory
[ ok ] Starting Docker: docker.
$ sudo service docker status
[FAIL] Docker is not running ... failed!
よくわからないので、ここ(https://github.com/microsoft/WSL/discussions/4872)を参考に設定していきます。
どうやら、WSL2のDebianでは、fstab
ファイルがないので作成してiptables
の設定をしないとダメみたいです。
基本的に、よくわかっていないのでコピペです。
sudo touch /etc/fstab
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
ちなみに、ip6tables
の方は書かなくても起動しました。
$ sudo touch /etc/fstab
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
update-alternatives: using /usr/sbin/ip6tables-legacy to provide /usr/sbin/ip6tables (ip6tables) in manual mode
$ sudo service docker start
[ ok ] Starting Docker: docker.
$ sudo service docker status
[ ok ] Docker is running.
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES