Help us understand the problem. What is going on with this article?

Docker Imageからファイルを取り出す

要約

イメージから直接は取り出せないので以下のようにコンテナを起動してdocker cpでコピーする

CONTAINER_ID=`docker create $IMAGE_NAME`
docker cp $CONTAINER_ID:$FILEPATH .

背景

バグや仕様調査のためにデプロイしたImage内のソースコードやファイルを取り出したいことがあります。
そのときにどうやればいいかの手順をまとめました。

対象ファイルパスを見つける

対象のファイルやディレクトリのパスがわかっていればよいのですが、そうではない場合は中身を調べて目的のものを見つける必要があります。

シェルを利用して探す

だいたい/bin/bashや/bin/shが入っているはずなのでそれを利用して対話的にファイルを見つけます
docker run --rm -it $IMAGE_NAME /bin/bash

入ってなければDockerfileのベースイメージとして使い、インストールしたイメージを作ってしまうのも手です。

diveでレイヤごとの差分を見て探す

dive を利用することでレイヤごとにファイルツリーを見ることが出来ます。
特定のレイヤで追加されたことがわかっているような場合にはこちらのほうが素早く探せる場合があります。
dive $IMAGE_NAME

diveの使い方は以下の記事が参考になります。
https://qiita.com/t_o_d/items/625ad7a274ca34be3312

対象のファイルをコピーする

イメージからファイルは基本的には直接取り出せないみたいです。
そのため、以下のようにコンテナを起動してdocker cpでコピーすることでファイル・フォルダをコピーできます。

# IMAGE_NAMEに対象のイメージ名、 FILEPATH に対象のファイルのDocker Image内のファイルパスをセット
IMAGE_NAME=me/my_application:1.0.0
FILEPATH=/app/scripts/woker/

CONTAINER_ID=`docker create $IMAGE_NAME`
docker cp $CONTAINER_ID:$FILEPATH .
docker rm $CONTAINER_ID
pfn
Make the real world computable / 現実世界を計算可能にする
https://preferred.jp/ja/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした