11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【docker for mac】ローカルのファイルを共有してコンテナ内で実行する方法

Last updated at Posted at 2020-05-15

動機

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をかじっていこうかなーと思ってます。

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?