エクスポートできるように Docker 名/ハッシュを見つけるにはどうすればよいでしょうか?

エクスポートできるように Docker 名/ハッシュを見つけるにはどうすればよいでしょうか?

私は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

関連情報