4
1

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 1 year has passed since last update.

Dockerコンテナ上にあるファイルを確認したい

Last updated at Posted at 2022-03-19

はじめに

最近Dockerを使ってYOLOv5を使ってみたのだが,結果の画像を確認するのにいちいちDockerコンテナ内からホスト側(Dockerコンテナ外)にコピーして確認していた.
今後,物体認識をしていくのにいちいちこんなことをやっていたら気が狂ってしまう.

そこで今回はDocker外のファイルをDockerにマウントすることでこの問題を解決した.
ぜひ参考にしてほしい.

ちなみにDockerやYOLOv5を使う方法はこちらの記事↓で紹介している.

マウント とは

そもそもマウントとは,ホスト側(Dockerコンテナ外)にあるディレクトリやファイルをDockerコンテナ内で利用できるようにする機能だ.
詳しいことは以下の記事を参考にした.

ディレクトリをマウントする

では実際にマウントをしてみる.

まず,マウントしたいディレクトリ test を用意する.
その中に例えば

hello.txt
Hello world!

というテキストファイルを用意する.
image.png

この testディレクトリ を今回はマウントする.
マウントはコンテナを作る際に行う.runコマンドを打つときに以下のように打つ.

$ docker run -it -d --gpus all --name [name] -v /home/[ユーザディレクトリ]/[マウントしたいディレクトリ]:/usr/[マウント先のディレクトリ] [イメージ] bash

コンテナを作成がよく分からない人はこちらの記事に書いているので確認する.

マウント部分は -v /home/[ユーザディレクトリ]/[マウントしたいディレクトリ]:/[マウント先のディレクトリ] である.

まず,マウントしたいディレクトリは必ず絶対パスで指定すること.
自分はここで非常に手間取った.

$ pwd

で現在の絶対パスを確認できると思うので,それを入力する.
image.png
マウント先のディレクトリも絶対パスで書く必要がある.
今回はqiitaというディレクトリにマウントしたいと思う.

以下が私の環境でうったコマンドだ.
image.png
これで testディレクトリがマウントされた mount というコンテナができる.
ではコンテナ内に入って確認してみよう.

$ docker exec -it [name] bash
# ls

listをするとマウント先のディレクトリ qiita が作成されているのが確認できる.
image.png
そこに移動してみるとhello.txtが確認できる.

# cat hello.txt

で中身を確認できる.
image.png

次に,例えばtest ディレクトリ内で新しいファイルを作成してみる.

# touch docker.txt

image.png

ホスト側のディレクトリで確認すると,
image.png
docker.txtが作成されていることが確認できた.
ホスト側の操作もコンテナ内に反映され,コンテナ内の操作もホスト側に反映された.

これでDockerコンテナ内からホスト側のディレクトリを操作できるようになり,画像の確認やテキストの編集を行えるようになる.

おわりに

今回は,Dockerコンテナ内のファイルを確認できる方法を紹介した.

4
1
1

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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?