エクスポートできるようにドッカー名/ハッシュをどのように見つけることができますか?

エクスポートできるようにドッカー名/ハッシュをどのように見つけることができますか?

私は次のdockerscriptからdockerコンテナを作成しました。

user@servername:~$ echo "FROM ubuntu:latest" > dscript.txt
user@servername:~$ 
user@servername:~$ cat dscript.txt 
FROM ubuntu:latest
user@servername:~$ docker build -t ubu.image - < dscript.txt
Sending build context to Docker daemon  2.048kB
Step 1/1 : FROM ubuntu:latest
 ---> 0ef2e08ed3fa
Successfully built 0ef2e08ed3fa

指定したイメージ名を使用して実行できますubu.image

user@servername:~$ docker run -it ubu.image
root@c00379445b9d:/# exit
exit
user@servername:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
user@servername:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

ただし、これをエクスポートするにはコミットハッシュを使用する必要があります。

user@servername:~$ docker export c00379445b9d > ubu.image.tar

ハッシュの代わりにコンテナ名を試しましたが、エラーが発生しました。

$ docker export ubu.image > ubu.image.tar
Error response from daemon: No such container: ubu.image

問題は次のとおりです。

  1. .tarファイルにエクスポートするために必要なコンテナの最新のコミットハッシュを見つける方法はありますか?

  2. 最新のコミットハッシュなしでコンテナをファイルにエクスポートできますか.tar?だからどうですか?

ベストアンサー1

コンテナ名ではなくイメージ名を使用しているため、ubu.imageパラメータには使用できませんdocker export

コンテナ名がわかっている場合は、それを直接使用してエクスポートできます。

docker export <container name>

またはハッシュを取得します。

docker ps -aqf 'name=<container name>'

コンテナ名がない場合は、指定されたイメージ名を持つすべてのコンテナのリストを取得できます。

docker ps -aqf 'ancestor=<image name>'

指定されたイメージから構築されたすべてのコンテナを返します。


labelより良いアプローチは、コンテナをフィルタリングするために使用できるように独自のコンテナを設定することです。

$ docker run -l foo=bar alpine sh -c 'echo 1'
1
$ docker run -l foo=baz alpine sh -c 'echo 1'
1
$ docker ps -aqf 'label=foo=bar'
d43aa7d7c854

おすすめ記事