도커 이미지 옮기기

image_pdfimage_print

docker hub를 이용하지 않고, docker image를 배포하기 위해서는 기존 docker image를 복제하여 remote 서버에서 사용할 수 있어야 한다. 이를 위해서 docker는 3가지 방법을 제공하고 있는데, 각각의 특징 및 활용방법을 확인해 본다.

[Save]

1. 특징

– 원본 image를 그대로 복제하여 file로 export

2. 활용

– 인터넷 접속이 어려운 상황에서 image를 직접 배포하는 용도

– import, commit과 차이 없음

3. example

> docker save ubuntu | gzip > ubuntu-golden.tar.gz

> zcat ubuntu-golden.tar.gz | docker load

[export]

1. 특징

– 현재 구동중인 container의 상태(파일/폴더추가, log 등)를 그대로 복제

– 원본 image와 다른 현재 운영상태를 image로 export

2. 활용

– 현재 운영상태를 그대로 유지하여 container를 확장하는 경우

3. 고려사항

– Dockerfile이 유지되지 않아, 새로운 설정을 추가하기 어려움.

4. example

> docker export <containerid> | gzip > mariadb-10-1.tar.gz

> zcat mariadb-10-1.tar.gz | docker import – mariadb:10.1

5. Troubleshooting

– export -> import -> docker run을 실행하면, 아래 에러 발생 “docker: Error response from daemon: No command specified.”

– export는 변경된 filesystem만 export하지, Dockerfile의 ENV, CMD, ENTRYPOINT등을 반영하지 못함.

– 해결

* save 명령어를 사용

* import시에 실행할 명령어를 옵션으로 추가할 수 있으나, save -> load를 이용하여 처리하는 것이 안정적일 것 같다.

[commit]

1. 특징

– 실행중인 container를 image로 저장

– export와 다른 점은 실행결과가 새로운 image를 생성하는 것.

– save/export는 모두 image를 file로 생성.

– 새로운 image를 생성하면서 -c 옵션으로 CMD, ENV등의 명령어를 적용할 수 있음.

2. 활용

– 일반적인 상황에서는 대부분 export를 많이 사용.

– commit은 임시 container에서 작업한 내용을 다른 곳에서 활용하고자 할때, 작업 내용이 사라지지 않도록 image로 저장하는 용도? (추측..)

3. example

> docker commit –change “ENV DEBUG true” c3f279d17e0a svendowideit/testimage:version3

[출처] [docker] import vs save vs commit|작성자 freepsw

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다