
私は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
質問は:
コンテナをファイルとしてエクスポートするために必要なコンテナの最新のコミット ハッシュを見つける方法はありますか
.tar
?最新のコミットハッシュがない場合、コンテナを
.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