
He creado un contenedor acoplable a partir de un dockerscript, por ejemplo
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
Y puedo ejecutarlo usando el nombre de la imagen que le he dado, es decir 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
Pero para exportarlo tengo que usar el hash de confirmación:
user@servername:~$ docker export c00379445b9d > ubu.image.tar
Intenté usar el nombre del contenedor en lugar del hash pero arroja un error:
$ docker export ubu.image > ubu.image.tar
Error response from daemon: No such container: ubu.image
La pregunta es:
¿Hay alguna manera de averiguar el último hash de confirmación del contenedor que se necesita para exportar el contenedor como un
.tar
archivo?Sin el último hash de confirmación, ¿es posible exportar el contenedor como
.tar
archivo? ¿Es así, cómo?
Respuesta1
El ubu.image
que usó es el nombre de la imagen, no el nombre del contenedor, por lo que no puede usarlo como argumento para docker export
.
Si conoce el nombre del contenedor, puede usarlo directamente para exportar:
docker export <container name>
o obteniendo su hash:
docker ps -aqf 'name=<container name>'
Sin el nombre del contenedor, puede obtener toda la lista de contenedores con el nombre de la imagen proporcionado:
docker ps -aqf 'ancestor=<image name>'
Tenga en cuenta que devolverá todos los contenedores creados a partir de la imagen proporcionada.
Un mejor enfoque es configurar su propio contenedor label
, de modo que pueda usarlo para filtrar el contenedor:
$ 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