質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

11801閲覧

docker コンテナ内部のファイルが完全に削除できない

Hidek_iMiyamoto

総合スコア6

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2017/04/18 09:10

編集2017/04/19 05:31

###前提・実現したいこと
docker コンテナ内部でファイルを完全に削除したい。

###発生している問題・エラーメッセージ

rm testfile
とすると 問題なくコマンドが正常終了するが
その後以下実行するとtestfileが残っているような表示になる。
ls -l
?????????? ? ? ? ? ? testfile

ファイル名を指定して実行すると以下になる。
ls -l testfile
ls: cannot access testfile: No such file or directory

###試したこと
削除後に
touch testfile
を実行すると正常にコマンドが実行できる。

その後
mv testfile testfile2
とした後にls を実行すると、

問題で記載している内容の
?????????? ? ? ? ? ? testfile

が表示される。

sh-4.2# LANG=C /bin/ls -l > /tmp/lslog.txt
/bin/ls: cannot access testfile: No such file or directory
sh-4.2# less /tmp/lslog.txt

以下、抜粋
-rw-r--r-- 1 root root 0 Apr 19 11:14 lslog.txt
?????????? ? ? ? ? ? testfile

lsattr testfile を実行すると。
lsattr: No such file or directory while trying to stat testfile
と表示される。

??????の文字化けを解消するため
docker stop コンテナ名
docker rm コンテナ名
docker run -e LANG=en_US.UTF-8 -it コンテナ名 /bin/bash

を実行して再度ls をするが、文字化け?は変わらず。

###補足情報(言語/FW/ツール等のバージョンなど)
OS; CentoS 7.3.1611
Docker: version 17.04.0-ce, build 4845c56
Dockerコンテナ内部のファイルシステム: overlay

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lazhuward

2017/04/18 11:00 編集

とりあえず【LANG=C /bin/ls -l】を叩いてみてもらえませんか?もしかしてリンクじゃないですかね
Hidek_iMiyamoto

2017/04/19 00:57

sh-4.2# LANG=C sh-4.2# ls -l ls: cannot access testfile: No such file or directory ??????????  ? ?    ?       ?            ? testfile となりました。 ファイルアクセスできないのに見えているのがよくわからないです…
lazhuward

2017/04/19 01:30 編集

本当はコマンド分けずに【LANG=C /bin/ls -l】のまま打ってほしかったんですが。。。まぁ一緒みたいなので。では、ファイルに落とすとどうなりますか?【LANG=C /bin/ls -l > /tmp/lslog.txt】【less /tmp/lslog.txt】上の質問文に追記できますので追記してください。ここ改行できないので。
lazhuward

2017/04/19 01:39

あ、わかった。immutableか。回答書いておきます。
guest

回答2

0

lsattr testfile と打ってください。

恐らくこうなると思います。
----i--------e-- testfile

i はIMMUTABLEの意味でrootでも変更できません。

ですので以下のコマンドを実行して変更不可を解除します。
sudo chattr -i testfile

逆に変更不可にしたいときはこのようにします。
sudo chattr +i testfile

こちら参考になるかと。
「lsattr」と「chatter」

Dockerコンテナのキャラクタ指定

docker run -e LANG=en_US.UTF-8 -it コンテナ名 /bin/bash

en_US.UTF-8ja_JP.UTF-8 でも良いです

投稿2017/04/19 01:56

編集2017/04/19 04:51
lazhuward

総合スコア1294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Hidek_iMiyamoto

2017/04/19 02:25

lsattr testfileを実行したのですが、 lsと同様、No such file or directory while trying to stat testfile でした。
lazhuward

2017/04/19 02:35 編集

アクセスすらできないってことですね。では【chattr -ias testfile】→lsしてみてください。
Hidek_iMiyamoto

2017/04/19 03:29

chattr -ias testfile の時点で ↑↑と同じエラーが表示されます。 ls をしても ???の記述がのこったままです。
lazhuward

2017/04/19 04:42

じゃあやっぱり文字化け先に直しましょうか。あと差し支えなければBash使ってみてください。 コンテナログインするときに【sudo docker exec -it コンテナ名 /bin/bash】→【export LANG=en_US.UTF-8】→lsするとどうなりますか?
lazhuward

2017/04/19 04:52 編集

あ、先にrun設定しないと駄目だった。上に追記しました。
Hidek_iMiyamoto

2017/04/19 05:32

質問側に追記しました。 特にかわらず ????? の表示そのままでした。
lazhuward

2017/04/19 05:50

LANGで駄目なんですか。LC_CTYPEとLC_ALLかな。一回【locale】の結果を貼り付けてもらえませんか? エラーが出たらエラー内容のまま記述してください。ユーザー名はいってたらマスキングしてください。
TaichiYanagiya

2017/04/19 06:14

文字化けではなく、(コンテナ内部から見た)ファイルシステムがおかしくなっていて、パーミッションなどの情報が取得できない状況なのではないでしょうか。 実際にファイルシステムがおかしくなっているのか、そうではなく、ホスト-コンテナ間で何か不整合が起きているのかはわかりません。
lazhuward

2017/04/19 06:31

ああそうか。となるとfsckすれば良いのですが、恐らくルートボリュームだと思うしunmountできないから作り直したほうが早いのかもしれないな。
Hidek_iMiyamoto

2017/04/19 07:31

お二人ともコメントありがとうございます。 作り直しで対応してみます。
guest

0

こちらの現象が発生するのは、特定のコンテナ用イメージだけでしょうか。あるいは、どのようなイメージを使っても同様の問題がありますでしょうか。

気になる所としましては、Docker側というよりホスト側でトラブルが起こっているかもしれません(ファイルの不整合など)。 dmesg コマンドでファイルシステムの問題が画面に表示されているようでしたら、まずそちらの確認と対応が必要と思います。

他に確認点としましては、 overlayfs ドライバの場合、コンテナ内のファイルの実体は、ホスト側では /var/lib/docker/overlay/ ディレクトリ以下に保管されています。

そのため、find /var/lib/docker/overlay/ -name testfile などでホスト上の実体の確認も、解決につながるかもしれませんね。

投稿2017/04/28 04:47

zembutsu

総合スコア1584

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問