0
0

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.

Win11にDocker Desktopなしでコンテナ環境をつくる

Last updated at Posted at 2023-05-03

Docker Desktopを使わずにdockerをWindows11で使いたいな~と思い実験したことのメモ。
たまにしか使わないと、毎回アップグレードをきかれて面倒なので。

環境

  • エディション: Windows 11 Pro
  • バージョン: 22H2 (ビルド: 22621.1555)
  • プロセッサ: AMD Ryzen
  • メモリ: 16GB

前提

仮想化がONになっていることを確認します。もともとONだったのでやること特になし。
タスクマネージャーのパフォーマンスのCPUで見れます。

image.png

Dドライブにインストール

とりあえず、VMとデフォルトのUbuntuを入れます。

wsl --install

再起動したら有効になるよ、とのことなので再起動。
再起動後、コマンドプロンプトが勝手に起動してUbuntuが起動。
22.04.2 LTSでした。
そのコマンドプロンプト窓(=Ubuntuのターミナル)で、作成するユーザーとパスワードを要求されたので作成。
exitで抜けてちょっと待つとシャットダウンされるみたいでした。(wsl -l -vで確認)

この時点でUbuntuが使えますが、Cドライブにインストールされています。
メインのストレージがDドライブなので、Dドライブに移行。
( 参考: https://programwiz.org/2021/06/26/how-to-move-wsl2-d-drive-from-c/ )

cd /D D:\
mkdir WSL
cd WSL
wsl --export Ubuntu Ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu Ubuntu Ubuntu.tar --version 2

移行するとログインユーザーがrootになるので、regeditでレジストを編集する。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss
の下に各ディストリビューションの設定がある。この手順通りならひとつだけあるのでそれを選択し、DefaultUidの値を10進数で1000に設定。

これで、WSLを起動するとUbuntuに初回起動で作成したユーザーで接続されます。
(wslコマンドで起動できる)
起動後、接続ユーザーは作成したユーザーになるが初期ディレクトリがimportしたところ(WindowsのDドライブ)を見ていました。
ホームディレクトリは変わっていないので、cdだけ実行すれば戻れるため気にしない。

WSLの設定

参考: https://learn.microsoft.com/ja-jp/windows/wsl/wsl-config#wslconfig

WSLにメモリが持っていかれすぎるのを防ぐため、設定ファイルします。
%UserProfile%(通常、C:\Users<UserName>)に、.wslconfigを作成。
ついでなのでスワップのサイズや場所も変えておきます。

C:/Users/ユーザー名/.wslcofig
[wsl2]
memory=4GB
swap=4GB
swapfile=D:\\WSL\\tmp\\wsl-swap.vhdx

設定を読ませるため、もしWSLが起動しているならいったん落としておきます。(wsl --shutdown)

VSCodeの準備

参考: https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode

VSCodeの拡張機能WSLを入れます。Microsoft公式。
ほかのリモート系のパック「Remote Development」から入れておくと楽。
入れると、VSCodeのいちばん左下にアイコンが増え、ココをクリックすることでRemote Developmentのメニューが表示されます。

image.png
image.png

「WSL への接続」を押すと、wslコマンドを実行したときと同じようにVM起動とUbuntu起動が行われ、VSCodeサーバーのインストールもされてVSCodeから操作できるようになります。
左メニューのファイルから目的のフォルダを選択して開いたり、ターミナルを開く(ショートカット: Ctrl+J)とUbuntuのコンソールになっていたりしています。

dockerのインストールと確認

入っていないことを確認。

$ sudo docker --version
docker --versionCommand 'docker' not found, but can be installed with:
sudo snap install docker         # version 20.10.17, or
sudo apt  install docker.io      # version 20.10.21-0ubuntu1~22.04.2
sudo apt  install podman-docker  # version 3.4.4+ds1-1ubuntu1
See 'snap info docker' for additional versions.

2番目のコマンドの方が少し新しそうだが、試したところなんかおかしかったので1番目のコマンドを実行してインストール。
普通にデーモンも起動しているしなんならdocker-composeも入っていました。(公式の最新2.17.2より新しいのが気にはなったが)

# docker本体のバージョン確認
$ sudo docker version
Client: Version:           20.10.17
 API version:       1.41
 Go version:        go1.18.10
 Git commit:        100c70180f
 Built:             Tue Mar  7 06:29:35 2023
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.10
  Git commit:       a89b842
  Built:            Tue Mar  7 06:30:14 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0$docker compose version
# docker-composeのバージョン確認
$ sudo docker compose version
Docker Compose version v2.5.0
# dockerイメージ(まだない)の表示でデーモン起動を確認
$ sudo docker image ls -a
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE

ついでにメモリやスワップの設定が反映されていることも確認。

$ free -m
               total        used        free      shared  buff/cache   available
Mem:            3919         737        2009           3        1171        2973
Swap:           4096           0        4096

dockerとdocker-composeがちゃんと動くことを確認するため、簡単なdocker-composeをたちあげてみる。

$ mkdir -p test/compose
$ cd test/compose
$ touch docker-compose.yml
docker-compose.yml
version: '3'
services:
  nginx:
    image: nginx:latest
    ports:
      - 80:80
$ docker compose up

Windows側のブラウザで、http://localhostにアクセスしてNginxのトップページが出ればOK。
Nginxの停止は、VSCodeで別ターミナルをあげてcd test/compose && docker compose down

これで準備完了。gitはもともと入っていたのでここから先はいろいろできるはず。

zshを入れる

bashのまま作業を続けるのもつらいので、zshを入れておく。
VSCodeのターミナル前提。
参考: https://qiita.com/gilly/items/5ff7bd7142e963cdbb9b

# zshのインストール
sudo apt-get install zsh
# テーマの準備(フレームワークをクローン)
cd
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
# zsh切り替え(`q`の入力で設定ファイルをつくらずに抜ける)
zsh
# zsh設定ファイルの作成
setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

ここで、zshをVSCodeのデフォルトにしておく。
ターミナル右上の左から2番目、「+」ボタン右の「v」から開いたメニューの「既定のプロファイルから選択」からzshを選択。
いったん、ターミナルを閉じておく。

exit # zsh抜ける
exit # bashの終了

preztoの設定ファイルを編集して、テーマを変更する。VSCodeでホームディレクトリにある.zpreztorcの、2023/05/08だと133行目にある以下の行を編集する。
個人的おすすめテーマはsteeef。いじらなくてもgitの情報が出る。

.zpreztorc
-  zstyle ':prezto:module:prompt' theme 'sorin'
+  zstyle ':prezto:module:prompt' theme 'steeef'

変更の保存後、Ctrl+Jでターミナルを開くとzshがテーマつきで表示される。

参考まとめ

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?