トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Windows上にUnix環境を構築する

参考

sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
https://www.glamenv-septzen.net/view/1422
https://i.loveruby.net/ja/rhg/cd/win.html

概要

WSL2 WSL VirtualBox Cygwin Msys2
動作条件 1903 以降、ビルド 18362 以上 Windows10なら動くと思う あまり気にしなくていい あまり気にしなくていい あまり気にしなくていい
Linuxカーネル あり なし あり(LinuxOSを使えば) なし なし
Dockerの実行 可能 動くけど不具合が多い 可能 不可 不可
ローカルサービスへの
ポートフォワードの必要性
不要
.wslconfig に localhostForwarding=True
不要 不要
ホストネットワークのNICを追加して別IPを降る
不要 不要
バックアップ(スナップショット) export、importが可能 export、importが可能 スナップショットもバックアップも可能 ディレクトリ丸ごとコピー ディレクトリ丸ごとコピー
Windows実行体のコンパイル MinGW MinGW MinGW gcc、MinGW MinGW
おすすめ
動作条件を満たすならこれが一番いい
X
dockerがまともに動作しないのでおすすめしない

WSL2より起動は遅いけど何かと使いやすい

sshクライアントとかちょっとコンパイルするだけならあり

sshクライアントとかちょっとコンパイルするだけならあり

Windows上でUnix環境を利用するには大きく2つの方法がある。

  • Windows上でLinuxを動作させる
  • Windows上でUnix互換環境(UnixのコマンドをWindows用に移植したもの)を使う

個人的にはWSL2が使い勝手が良くて、動作の安定性も高いと思う。

Unix仮想環境

 WSL2

WSL2の設定

 WSL

WSL単独でのdockerの動作に問題が多々ある。hello-world程度の簡単なコンテナであれば動作可能。

設定手順

  1. WSL起動
    1. 管理者権限でコマンドプロンプトを実行(wslは管理者権限を使わないとdockerサービスが起動しない)
    2. wsl -d Ubuntu-20.04 -u user
  2. apt アップデート
    1. sudo apt update
  3. docker-ceの設定(最新版だと正常に動作しないので古いものをダウンロードする)
    1. curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb
    2. sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb
  4. dockerグループに追加設定
    1. sudo gpasswd -a user docker
    2. ログインしなおす(id で dockerグループが追加されていればOK)
  5. サービス起動とhello-world実行
    1. sudo service docker start
    2. docker run --rm hello-world

 Virtualbox

WSL2が使えないときはこちらの方法がおすすめ。
OSのインストールが面倒なときは https://www.osboxes.org/ からイメージをダウンロードする。

Ubuntu Server

  1. キーボードの設定
    1. sudo dpkg-reconfigure keyboard-configuration
  2. SSHを使う場合
    1. ホストオンリーアダプタを追加して、ホストOSとゲストOSを通信できるようにする必要がある
      1. ゲストOSの設定画面 -> ネットワーク -> アダプタ2 -> 割当 をホストオンリーアダプタにする
    2. 起動後にアダプタ2にDHCPを設定する
      1. sudo vim /etc/netplan/00-installer-config.yaml
network:
 ethernets:
   enp0s3:
     dhcp4: true
   enp0s8:
     dhcp4: true
      1. 上記のように追加したデバイスのdhcpを有効にする
  1. dockerの設定
    1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    2. sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    3. sudo apt update
    4. sudo apt install docker-ce docker-compose
    5. sudo gpasswd -a ユーザ名 docker
    6. 追加したグループを反映させるためにログオフして、ログインしなおし
  2. hello-world実行
    1. docker run --rm hello-world

Unix互換環境

Windows上にUnix互換環境を構築するには、Msys2やCygwinを使う必要がある。

UnixとWindowsではパスの区切文字(\と/)やデバイスの指定方法(c:\Usersと/home)が異なるため、Unix互換ツールを利用するには、その違いを意識せず利用するための仕組み(POSIXエミュレーション)が必要となる。

ツール 説明
Cygwin Unix互換環境として優秀。パッケージも多く、X関連も動作させることができる。
Msys2 Cygwinから派生し、必要なツールを必要最低限使えるようにして、Mingwの利用を目的として作られた。

 MinGW

WindowsのGCCコンパイラ。POSIXエミュレーションはなく、普通のWindowsアプリケーションであり、パスの指定も通常のパス(c:\data\src\test.c)が使える。
CygwinやMsys2と一緒に使われることが多いが、CygwinやMsys2にもgccが存在するので区別して利用する必要がある。

例えば、Cygwinのgccでコンパイルしたexeの実行には、Cygwin1.dllが必要。
同様にMsys2のgccでコンパイルしたexeの実行には、msys-2.0.dllが必要。
MinGWのgccでコンパイルしたexeの実行は、そのまま実行できるし、内部で利用するパスもWindowsのパス指定が利用できる。

 使い分け

個人的には、
ツール 用途
Cygwin Windows上にがっつりUnix互換環境を構築する。またはMsys2で動かなかったものを動かしたい。(WSLや仮想マシンでもいい気がするけど・・・)
Msys2 Xとかは必要なく、CUIのUnix互換環境を構築したい。MinGWでWindows上にgccの環境が欲しい。

環境設定

 Cygwin

Cygwin の設定

Cygwinはアーカイブを展開後すぐに使えるCygwin環境。ただし、2018年以降更新されていない。
gnupack の設定

 Msys2

MSYS2 Portableの環境を作成する

[カテゴリ: OS > Windows]
[カテゴリ: ツール > Cygwin]
[カテゴリ: ツール > Msys2]
[カテゴリ: 仮想化 > WSL]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2021年07月08日 23時03分49秒