動機
CTFを始めたいなーと思ってVirtualBoxで環境構築したものの、ファイルの共有ができずに諦め、Dockerに行き着いたのでメモします。
Linux上でしか実行できないバイナリファイルを、仮想環境で動かしたいときなどにファイルの共有は必要らしいです。
今回は仮にやりたいこととして、「ローカル(mac)で作ったpythonファイルをdocker(centos)で実行したい」、とします。
前提
docker初心者で、docker for mac と、centosのイメージはインストールできているものとします。
$ docker --version
Docker version 19.03.5, build 633a0ea
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 b5b4d78bc90c 9 days ago 203MB
ローカルにファイルを作成
ローカルのデスクトップにPythonファイルを作っていきます。
cd desktop
mkdir Python
cd Python
touch index.py
Pythonファイルの中身はこのようにします。
print("hello docker!")
コンテナを立ち上げる
要はここが全てで、コンテナを立ち上げる時、
$ docker run -v "<共有したいローカルのフォルダのパス>:<コンテナ内の共有先>" -it "<イメージ名>"
というコマンドを打ってフォルダをマウントします。
$ docker run -v "/Users/tagawahirotaka/Desktop/Python/:/Python" -it "centos:7"
Volumeについて詳しい記事はDocker、ボリューム(Volume)について真面目に調べたがありました。
コンテナ内で実行
コンテナ内でファイルを調べると、きちんとPythonフォルダができています。
階層を移動し、実行するとちゃんと hello docker! が表示されます。
[root@5cd7e14e1f10 /]# ls
Python anaconda-post.log bin dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@5cd7e14e1f10 /]# cd Python
[root@5cd7e14e1f10 Python]# ls
index.py
[root@5cd7e14e1f10 Python]# python index.py
hello docker!
再度マウントをせずコンテナを立ち上げた時には、Pythonフォルダは消えています。
まとめ
VirtualBoxでCentOSを立ち上げるのには結構時間がかかったのに、dockerだと一瞬でした。
また、VirtualBoxとMac間でファイルのやりとりをする共有フォルダを作成する等の記事を参考にしても、うまくファイルの共有ができずに詰まっていたのですが、これもdockerだと一瞬でした。
これから少しづつCTFをかじっていこうかなーと思ってます。