SurfaceGO2上でCentOSを動かすようにしたのでメモ。
入れる前に2021年11月時点の最新にWindowsUpdateしておいた。
WSL2
とりあえずWSL2が動作するようにする。
昔と違って色々やらななくても
wsl --install
で普通にWSL2とUbuntuが入った。
念のためwsl --set-default-version 2
はしておいた。
CentOSを動かす方法としては大きく次の形がありそう。
- 仮想環境を構築して、CentOSを入れる
- WSL2で直接CentOSを適用する
- WSL2で入れたUbuntuに対して、DockerでCentOSを入れる
- Docker for Windowe(WSL2)でCentOSを動かす
最初はWSL2で直接入れようと思っていたが、Dockerパターンの方がよい気がしたので、Ubuntu+Dockerにする。
Docker
このあたりが参考
apt-getする。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $USER
ここまででDocker本体のインストールが完了。
docker -v
で確認可能。
CentOSのイメージを取得
docker pull centos:centos7
確認は
docker images
でCentOSのイメージがあればOK
Dockerサービスを起動する。
sudo service docker start
実際にイメージを開始する。
docker run -it -d --name centos7 centos:centos7
が、後で80番ポートとかでアクセスする場合は-pオプションでポート開けておく。
docker run -it -d -p 80:80 --name centos7 centos:centos7
のような感じ。(1敗)
一応あとからiptablesとかで解放できないこともないらしい。
あとは普通にdockdr ps
で確認して、
docker exec -it centos7 bash
で中に入ってコマンド実行が可能。
使い終わったら
docker stop centos7
docker rm centos7
で削除したら綺麗になる。
何かをインストールして継続して使いたいのではなく、
一時的に立ち上げてテストしたい、といった用途ならこれがよさそう。
(インストールする場合はDockerイメージ作ればいける)
centOS
先ほどのdocker execで中に入った後にサーバを構築する場合、
CentOSなので
yum install nginx
のようにyumでインストールするのだが、リポジトリが設定されていないので
/etc/yum.repos.d/nginx.repoファイルを追加する。
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
最近だと普段はVSCodeをGUI上で使うので、正直viやemacsの使い方をマスターするつもりは学生時代からない。
のでこういう時はnanoエディタを使う。最初からは入っていないので
yum install nano
でインストールしてnano /etc/yum.repos.d/nginx.repo
で開いてコピペ、保存。
これでnginxのインストールができるようになった。
起動はsystemctl start nginx
で行うのが一般的だと思われるが、
Dockerだとそのままでは実行できないので/usr/sbin/nginx
で直接実行。
curl http://localhost
でDocker内からは接続出来る事を確認。
Windowsからもlocalhostで接続出来た。
CentOS向けのソフトウェアをテストする際にはこれでいける。
必要があれば作ったコンテナからイメージに変換しておくことで、いつでも立ち上げられる。
ここにやり方。
docker commit centos7 centos7-nginx
のようにCommitする。