
나는 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