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