Docker 이미지를 파일로 저장/가져오기

han·2022년 1월 16일
0

이미 존재하는 docker 이미지를 파일로 압축하고, 해당 파일을 이미지로 변환하는 방법이다.
보통은 docker hub나 내부 private repository를 통해서 이미지를 push하고 pull하여 사용하지만 간혹 외부 인터넷이 막혀있는 환경에 컨테이너를 배포해야 되는 경우 사용할 수 있다.

1. save & load

save & load를 사용하면 로컬에 있는 docker image를 tar파일로 추출하고 load를 통해 다시 이미지화 할 수 있다.
이 경우 추출된 이미지는 원본 이미지와 완전히 동일하다.

save

  • command: docker save {option} {image:tag} {filename}
  • ex) docker save -o test-image:1.0 test.tar

load

  • command: docker load {option} {filename}
  • ex) docker load -i test.tar

2. export & import

export & import를 이용하면 동작중인 컨테이너를 tar파일로 추출하고 import를 통해서 가져올 수 있다.
export를 사용하면 save와는 다르게 이미지의 layer에 대한 내용은 포함되지 않는다.
export한 컨테이너 내의 정보는 하나의 레이어로 통합된다.

export

  • command: docker export {container name or container id} > {file name}
    -ex) docker export test-image > test.tar

import

  • command: docker import {file name} {image:tag}
  • ex) docker import test.tar test-image:1.0

추가로 이 방법으로 추출한 이미지에 대하여 docker run -it {image:tag}를 수행하면 다음과 같은 에러메시지를 보게된다.
docker: Error response from daemon: No command specified.
그 이유는 export를 통해 만들어진 이미지는 단순히 컨테이너의 파일시스템을 아카이빙해서 만든 이미지이기 때문이다.
즉, 컨테이너가 기동된 후 실행할 커맨드가 필요하다.
만들어진 이미지를 바탕으로 새로운 도커파일을 작성하거나 import 시 커맨드를 추가하면된다.
docker import --change 'CMD ["blah~ blah~"]' test.tar test-image:2.0

0개의 댓글