Windows 10 で ubuntu Docker image と unrar をつかって RAR 形式のファイルを展開する手順です。ホスト OS の Windows 10 には RAR 展開ソフトウェアをインストールせずに、Docker コンテナで展開処理します。
RAR 形式に圧縮されたファイルを展開するためには WinRAR や 7-Zip のような RAR 圧縮ファイルを扱えるソフトウェアが当然必要になりますが、Docker を利用することによって、ホスト OS ではなくコンテナに展開プログラムをインストールし、用が済めばコンテナごと破棄する、という使い方ができます。普段から RAR 形式をよく利用するのであればソフトウェアをインストールしておけばよいですが、稀に使用する程度という人にとって、ホスト OS に専用ソフトウェアをインストールせずに済みます。
1. ubuntu イメージを取得する
ファイルの展開に使用する Linux コンテナイメージを docker hub から取得します。ここでは現時点の ubuntu:latest である 20.04 Focal Fossa を使用します。
> docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
Digest: sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c
Status: Image is up to date for ubuntu:latest
docker.io/library/ubuntu:latest
2. ubuntu コンテナに unrar をインストールする
初期イメージに unrar は含まれていないため、unrar をインストールしたコンテナを作成します。unrar のインストールには ubuntu のパッケージ管理ツール apt-get を利用します。
> docker run -it ubuntu /bin/bash -c "apt-get update && apt-get -y install unrar && rm -rf /var/lib/apt/lists/*"
...
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
unrar
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
...
3. コンテナから新しいイメージを作成する
ファイルを展開するときに使用する新しいイメージを作成します。イメージの名前は任意ですが、下記の例では my/unrar
としています。まず、docker ps
でコンテナ ID を確認して(下記の例では 9b720fae191a
)、docker commit
でイメージを作成し、イメージを作成した後は docker rm
でコンテナを削除します。
> docker ps -l
CONTAINER ID IMAGE STATUS
9b720fae191a ubuntu Exited (0) 3 minutes ago
> docker commit 9b720fae191a my/unrar
> docker rm 9b720fae191a
4. RAR 形式の圧縮ファイルを展開する
ホスト OS のファイルシステムにある RAR 形式の圧縮ファイルを展開します。下記の例では「New Text Document.rar」から同じフォルダに「New Text Document.txt」を展開しています。 docker run
は実行する度にコンテナを作成しますが --rm
オプションを指定しておくと処理終了時にコンテナが自動で削除されるようになります。
> docker run -v ${PWD}:/tmp -w /tmp -i --rm my/unrar unrar e -r './New Text Document.rar'
UNRAR 5.61 beta 1 freeware Copyright (c) 1993-2018 Alexander Roshal
Extracting from ./New Text Document.rar
Extracting New Text Document.txt OK
All OK
使用しなくなったときは、Docker コンテナとイメージを削除します。
以上の手順のうち、新しいイメージを作成するまでの手順้は Dockerfile と docker build
コマンドで代用することもできます。Dockerfile を下記のような内容で用意しておいて docker build -t my/unrar .
を実行すると、my/unrar イメージからすぐに unrar を実行できる(上記 4 の手順)状態になります。この流れは unrar に限らず、Windows で Linux のプログラムを実行したい、という場面に応用できます。
FROM ubuntu:latest
# set a directory for the app
WORKDIR /tmp
# install unrar
RUN apt-get update && apt-get -y install unrar && rm -rf /var/lib/apt/lists/*