메뉴

문서정보

소개

도커 이미지를 다른 도커레지스트리 옮겨야 하할 수 있다. 이 때 사용 할 수 있는 도커 명령들은 아래와 같다. 이들 명령을 이용해서 도커 이미지를 저장/복구 하거나 다른 레지스트리로 옮겨보자. 그리고 export & import 와 save & load의 차이점도 살펴보자.

시나리오

 시나리오

현재 joinc 사이트를 온-프레미스(서버호스팅)에서 AWS로 이전하는 작업을 하고 있다. joinc는 라이브 코드 실행 기능이 있는데, docker를 이용해서 구현하고 있다. 따라서 현재 사용 중인 "온프레미스 도커 이미지"를 AWS EC2로 이전해야 한다.

"라이브 실행 예제"
package main

import "fmt"

func main(){
    fmt.Println("Hello World")
}
		

온프레미스 환경의 도커 버전정보는 아래와 같다.
# docker version
Client:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   a34a1d5
 Built:        Fri Nov 20 13:12:04 UTC 2015
 OS/Arch:      linux/amd64
이전해야 할 컨테이너 이미지의 이름은 runner이다.
$ docker images
REPOSITORY                     TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
runner                         v4                  aa39dbd72c05        18 months ago       1.405 GB

AWS EC2의 도커 버전은 아래와 같다.
# docker version
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a215d7133c34aa18e3b72b4a21fd0c6136
 Built:             Mon Jul  1 18:51:44 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a/18.06.1-ce
  Built:            Mon Jul  1 18:53:20 2019
  OS/Arch:          linux/amd64
  Experimental:     false

docker save & load 를 이용한 이전

docker save 명령을 이용해서 하나 이상의 도커 이미지를 tar 포맷으로 출력 할 수 있다. 기본은 표준출력이다. 사용법은 아래와 같다.
docker save [OPTIONS] IMAGE [IMAGE...]
-o 옵션을 이용하면 파일로 저장 할 수 있다.

아래와 같이 runner:v4 이미지를 tar 파일로 져장했다.
# docker save -o runner.tar runner:v4

이 파일을 AWS EC2로 옮겨서 load 했다. load 명령은 아래와 같이 사용한다.
docker load [OPTIONS]
표준입력을 이미지로 저장 할 수 있다. -i옵션을 이용해서 표준입력 대신 파일을 지정 할 수 있다. 아래와 같이 runner.tar 파일을 이미지로 저장했다.
# docker load -i runner.tar
혹은 아래와 같이 표준입력을 이용한 저장도 가능하다.
# cat runner.tar | docker load

이미지가 제대로 생성됐는지 확인해보자.
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
runner              v4                  f4de9509b5b1        18 months ago       1.4GB

docker export & import 를 이용한 이전

docker export와 import는 도커 이미지가 아닌 컨테이너를 대상으로 한다.

... 계속