!!!参考 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の実行, 可能, 動くけど不具合が多い, 可能, 不可, 不可 ,ローカルサービスへの{{br}}ポートフォワードの必要性, 不要{{br}}.wslconfig に localhostForwarding=True, 不要, 不要{{br}}ホストネットワークのNICを追加して別IPを降る, 不要, 不要 ,バックアップ(スナップショット), export、importが可能, export、importが可能, スナップショットもバックアップも可能, ディレクトリ丸ごとコピー, ディレクトリ丸ごとコピー ,Windows実行体のコンパイル, MinGW, MinGW, MinGW, gcc、MinGW, MinGW ,おすすめ,◎{{br}}動作条件を満たすならこれが一番いい, X{{br}}dockerがまともに動作しないのでおすすめしない, ◎{{br}}WSL2より起動は遅いけど何かと使いやすい, ○{{br}}sshクライアントとかちょっとコンパイルするだけならあり, ○{{br}}sshクライアントとかちょっとコンパイルするだけならあり Windows上でUnix環境を利用するには大きく2つの方法がある。 * Windows上でLinuxを動作させる * Windows上でUnix互換環境(UnixのコマンドをWindows用に移植したもの)を使う 個人的にはWSL2が使い勝手が良くて、動作の安定性も高いと思う。 !!!Unix仮想環境 !!WSL2 [[WSL2の設定]] !!WSL WSL単独でのdockerの動作に問題が多々ある。hello-world程度の簡単なコンテナであれば動作可能。 !設定手順 + WSL起動 ++ 管理者権限でコマンドプロンプトを実行(wslは管理者権限を使わないとdockerサービスが起動しない) ++ wsl -d Ubuntu-20.04 -u user + apt アップデート ++ sudo apt update + docker-ceの設定(最新版だと正常に動作しないので古いものをダウンロードする) ++ curl -O https://download.docker.com/linux/debian/dists/stretch/pool/stable/amd64/docker-ce_17.09.0~ce-0~debian_amd64.deb ++ sudo dpkg -i docker-ce_17.09.0\~ce-0\~debian_amd64.deb + dockerグループに追加設定 ++ sudo gpasswd -a user docker ++ ログインしなおす(id で dockerグループが追加されていればOK) + サービス起動とhello-world実行 ++ sudo service docker start ++ docker run --rm hello-world !!Virtualbox WSL2が使えないときはこちらの方法がおすすめ。 OSのインストールが面倒なときは https://www.osboxes.org/ からイメージをダウンロードする。 !Ubuntu Server + キーボードの設定 ++ sudo dpkg-reconfigure keyboard-configuration + SSHを使う場合 ++ ホストオンリーアダプタを追加して、ホストOSとゲストOSを通信できるようにする必要がある +++ ゲストOSの設定画面 -> ネットワーク -> アダプタ2 -> 割当 をホストオンリーアダプタにする ++ 起動後にアダプタ2にDHCPを設定する +++ sudo vim /etc/netplan/00-installer-config.yaml network: ethernets: enp0s3: dhcp4: true enp0s8: dhcp4: true +++ 上記のように追加したデバイスのdhcpを有効にする + dockerの設定 ++ 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 update ++ sudo apt install docker-ce docker-compose ++ sudo gpasswd -a ユーザ名 docker ++ 追加したグループを反映させるためにログオフして、ログインしなおし + hello-world実行 ++ 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の環境を作成する]] {{category2 OS,Windows}} {{category2 ツール,Cygwin}} {{category2 ツール,Msys2}} {{category2 仮想化,WSL}}