★★★ Twitterやってます。フォローして頂けると嬉しいです(*^^*) ★★★

【簡単】WindowsパソコンですぐにLinuxを使う方法

IT

Windows、MacOS、Linuxなど、いろいろなOSがありますが、MacLinuxBashが使えるのに、Windowsは使えなくて不便な思いをしたことはありませんか?

Windowsにもコマンドインタフェースはありますが、DOSプロンプトは非力すぎるし、PowerShellはコマンドが独特過ぎてシェルに慣れた人だと苦痛しかありません。

たまにログファイルを整形したり、目的のログを抽出したい時に、grepsedなどが使えればいいなとよく思いました。

今までHyper-VでLinuxの仮想マシンを立ち上げてきたりもしましたが、仮想マシンの立ち上げってリソース確保して、数ギガのISOイメージダウンロードしてインストールする、、と言った感じで、結構労力かかるんですよね。

そんな大げさなことせずに、今すぐにちょっと使いたいんじゃ!! という人向けの記事です。

今回は、お手軽にWindowsパソコンLinux(例えばUbuntuCentOS)を使う2つの方法を紹介したいと思います。

必要なもの
  • Windows10 Proパソコン
スポンサーリンク

WindowsパソコンですぐにLinuxを使う方法

2種類あります。Windows Subsystem for Linux 2(WSL 2)を使う方法と、Docker for Windowsを使う方法です。

どちらも公式サイトをみるといろいろ難しいことが書いてありますが、誤解を恐れずにざっくりと説明するとこんな感じです。

  • Windows Subsystem for Linux 2(WSL 2)
    • WSL 2をインストールするだけ
    • お試ししたい人向け
    • ホストPCとの境界がないのでBash側の操作がWindows10パソコンに影響する場合あり
  • Docker for Windows
    • Docker本体をインストール後にLinuxのイメージをダウンロードする
    • Linuxだけではなく、その他いろいろなツール類を動かせる
    • ホストPCから独立して動くのでBash側の操作によるWindows10パソコンに影響は無い
ばったん
ばったん

シェルをほんとちょっとだけ使いたい人はWSL2ですが、個人的にはDockerをオススメします

スポンサーリンク

Windows Subsystem for Linux 2(WSL 2)を使う

Microsoftの公式サイトでインストール手順の説明があります。

ちょっとあまり時間無かったので、ななめ読みしてこれをインストールしたらとりあえずBashは使えるようになりました。

bashが使えるようになります。

起動するとこのような感じです。Linuxコマンドが使えます。Windowsパソコンのハードディスクは/mnt/hostにマウントされて直接アクセス可能です。

Windowsの重要のフォルダは読み取り専用になっていましたが、パーミッション変更すればいじれてしまうのはちょっと怖いです。

そんなわけで、やはり私的にはDockerをオススメします。

スポンサーリンク

Docker for Windowsを使う

Docker本体をインストール

まずは、Dockerイメージを動かすためのDocker本体のインストールをします。インストール方法はこちらの参照してください。そもそもDockerって何?という方も簡単に説明していますのでご覧ください。

dockerが無事にインストールできたか、コマンドプロンプトを起動して、docker -v で確認できます。バージョンが表示されればインストール成功です。

dockerの操作は基本的にはコマンドプロンプトで行います。

UbuntuのOSイメージを取得

LinuxのOSイメージを取得します。今回はUbuntuで試します。

次のコマンドで入手できます。

> docker run ubuntu bash

このような感じでUbuntuのコンテナイメージをダウンロードします。一度ダウンロードすると次回以降はキャッシュされたイメージを使いますのでネット接続は不要ですし、高速で起動できます。

こんな感じで表示されます。

> docker run ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
5d3b2c2d21bb: Pull complete
3fc2062ea667: Pull complete
75adf526d75b: Pull complete
Digest: sha256:b4f9e18267eb98998f6130342baacaeb9553f136142d40959a1b46d6401f0f2b
Status: Downloaded newer image for ubuntu:latest

Ubuntuが起動する最低限の構成のイメージですので、ファイルサイズは100MB未満の軽量コンテナです。

取得したイメージは、docker image ls で確認できます。

> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
ubuntu       latest    4dd97cefde62   9 days ago   72.9MB

Ubuntuイメージを使ってUbuntuコンテナを起動

コンテナイメージを取得したら、次はコンテナを起動します。–name でコンテナに名前を付けます。名前を付けないと、コンテナIDという長い文字列で操作することになってしまうので面倒です。

(1) ubuntuコンテナを起動し、名前を ubu01 にする
> docker run -itd --name ubu01 ubuntu bash
841429accf56305c44e6ea5ecc97644b4ac5ce63990a59cd8a93c25032b6df60

(2) コンテナが起動したか確認
> docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
841429accf56   ubuntu    "bash"    5 seconds ago   Up 3 seconds             ubu01

起動中のUbuntuコンテナに接続

コンテナが起動していれば、名前を指定してコンテナに接続できます。

プロンプトが # になってしますので、コンテナ内のLinuxに接続完了です。

> docker exec -it ubu01 bash
root@841429accf56:/#

作業が終わってコンテナから出るには、exit で抜けます。

はい、これでWindowsパソコン上でUbuntuが起動しました!

これだけだと寂しいので、一応お片付けの方法も書いておきます。

お片付け

使い終わったら、コンテナを停止、破棄、イメージ削除します。

Ubuntuコンテナの停止

Ubuntuコンテナは起動しているので、使い終わった後のコンテナはまだ残っています。また同じコンテナを使う場合は停止し、また使う時に起動します。

(1) コンテナ停止
> docker stop ubu01

(2) コンテナ起動
> docker start ubu01

コンテナの破棄

もうコンテナを使わない場合はコンテナ自体を破棄します。破棄するとコンテナ内に追加でインストールしたソフトや作成したファイル類も破棄されてしまう点に注意してください。

コンテナ内で作成したファイルで残す必要があるものは、コンテナの外に出しておきましょう。やり方は後述します。

コンテナ破棄
> docker rm ubu01

コンテナ強制破棄
> docker rm -f ubu01
不要なコンテナを一括削除する方法

使い追わったコンテナって意外と溜まっていることがあります。1つひとつコンテナ破棄するのは大変です。Dockerコンテナを一気に削除する場合は、次のように実行すれば解決です。

◆停止中のコンテナをすべて破棄
> for /f %a in ('docker ps -aq') do docker rm %a

◆実行中のコンテナも含めてすべて破棄
> for /f %a in ('docker ps -aq') do docker rm -f %a

イメージの破棄

もうUbuntu自体使わないという場合は、イメージ自体を削除します。再度使う場合は、またイメージ本体のダウンロードからになります。

> docker image rm ubutu
スポンサーリンク

知っておくと便利なこと

コンテナの状態を確認

コンテナがどんな状態なのかは、docker ps -a で確認できます。

STATUS が UPは起動中、Exited は終了しています。括弧内の数値は終了コードです。ほとんどの場合、0が正常終了でそれ以外は異常終了です。

C:\tmp>docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED              STATUS                      PORTS     NAMES
16276dd58da1   ubuntu    "bash"    11 seconds ago       Exited (0) 2 seconds ago              ubu04
f5b6412b19ea   ubuntu    "bash"    14 seconds ago       Exited (0) 4 seconds ago              ubu03
604d84194314   ubuntu    "bash"    About a minute ago   Exited (0) 39 seconds ago             ubu02
841429accf56   ubuntu    "bash"    47 minutes ago       Up 47 minutes                         ubu01

コンテナ内とのファイルやりとり方法① docker cp編

Windows10のパソコン(ホストPC)から見てコンテナ内は完全に隔離された世界です。それがコンテナ化する目的の1つですが、やりとりできないのは不便です。

コンテナとの境界を飛び越えてファイルのやりとりをする場合は、docker cpコマンドを使います。

docker cp コンテナ名:フルパスで指定できます。

(1) Windows10(ホストPC)でファイル作成
> echo "Windows10!" > abc.txt

(2) Windows10(ホストPC)からUbuntuコンテナ内(ubu01)へコピー
> docker cp abc.txt ubu01:/tmp

(3) コンテナの中に入って確認
> docker exec -it ubu01 bash
root@5cb319bf2f5c:/# ls -l /tmp
total 4
-rwxr-xr-x 1 root root 12 Mar 13 03:57 abc.txt
root@5cb319bf2f5c:/# cat /tmp/abc.txt
Windows10!
root@5cb319bf2f5c:/#

docker cpでは、ファイル名のワイルドカード指定が使えないようですので、やりとりするファイルが多くて面倒くさい場合は次のマウント編の方がよいと思います。

コンテナ内とのファイルやりとり方法② マウント編

いちいちファイルのコピーが面倒な場合は、ホスト側のフォルダをDockerボリューム機能でマウントすることで、どちら側からも同時にアクセスできるようにすることもできます。

次のコマンドは、コンテナを起動する際に、Windows10のマイドキュメントフォルダに作った shareフォルダとUbuntuコンテナ内の/tmpをくっつけてます。

どちら側かも編集可能なフォルダができあがりますので、便利です。Windows側はドライブレターの書き方やパスの区切り文字が違いますので注意してください。

> docker run -itd --name ubu01 -v "/c/Users/battan/Documents/share":/tmp ubuntu bash

Windows10側で見た場合

コンテナのUbuntu側から見た場合

スポンサーリンク

まとめ

これでWindowsでも簡単にBashが使えるようになりましたね。シェルを使い慣れている方はこれでWindowsパソコンでも同様にシェルが使えますので、いろいろと作業が捗ると思います。

  • WSLかDockerを使う
  • Dockerの場合は本体を入れてからLinuxのDockerイメージをダウンロード
  • Dockerイメージからコンテナを立ち上げて完成
  • ホスト側とコンテナ内でファイルのやりとりはできる
  • 用事が済んだらコンテナを捨てれば綺麗サッパリ

Dockerの場合は、Dockerイメージをダウンロードすることでいろいろなツールが使えたり、専用の環境が構築できますので、是非試してみてください。当ブログでもいくつか紹介していますので、よかったら是非ご覧ください。

コメント

タイトルとURLをコピーしました