<이미지를 다른 시스템으로 이전할 경우>

  대상  output 주의 사항
save image tar  
load tar image  
export container tar 설정값 및 환경변수 초기화 (데이터는 영향 없음)
import tar image 설정 및 환경변수 등 필요

 

save/load 방법

# docker save -o [내보낼이름.tar] [내보낼 이미지:태그]

명령어로 centos:7 과 alpine:latest 이미지를 image.tar로 묶었습니다.

ls로 확인해보면 image.tar 가 생성된 걸 확인할 수 있습니다.

load로 다시 불러오기 전에 확인을 위해 기존에 있던 alpine과 centos를 삭제하겠습니다.

# docker load -i [내보낸이름.tar]

삭제 후 다시 image.tar를 load 하고 docker images로 확인해보면 다시 alpine과 centos가 생성된 걸 확인할 수 있습니다.

save/load 방법은 image를 내보내고 image를 가져오는 방식이여서 모든게 보장되어 사용이 바로 가능하다는 장점이 있습니다. 

 

import/export 방법

import/export는 save/load와 달리 컨테이너를 내보내고 이미지로 받아오는 방식입니다.

export 하기 위해 우선 a1이라는 이름으로 컨테이너를 실행시키겠습니다.

export 후 데이터의 변화 여부를 확인하기 위해 import.txt 파일을 생성해줬습니다. 

# docker export -o [내보낼이름.tar] [내보낼 컨테이너]

a1를 import.tar로 export 해준 후 ls 명령어로 확인해보면 import.tar 가 만들어진걸 확인할 수 있습니다.

import 할때는 이미지로 불러오므로 

# docker import [내보낸이름.tar] [이미지이름:태그]

로 불러옵니다. 

불러온 이미지로 a2라는 컨테이너를 실행시켜보면 에러가 뜨면서 실행되지 않습니다.

그 이유는 import 방식은 불러올 때 환경변수나 설정값들이 초기화 되면서 실행에 필요한 환경변수들이 없어졌기 때문입니다.

필요한 환경변수 값들을 넣어주기 위해 환경변수가 있는 alpine:latest와 비교해보겠습니다

alpine:latest에는 Cmd에 /bin/sh로 설정되어있는 반면, alpine:1에는 Env와 Cmd가 다 null 로 설정되어있습니다.

이를 import 할때 같이 설정해줄수 있는데 명령어는 아래와 같습니다.

--change 옵션뒤에 필요한 설정값들을 넣어주면 됩니다. 

다시 import 후 컨테이너를 생성해보면 잘 생성되는 걸 확인할 수 있습니다. 생성 후 ls 명령어로 확인해보면 export 전 생성한 import.txt 파일이 그대로 있는걸 확인할 수 있습니다.

import/export 할때 환경변수들은 초기화 되지만 컨테이너의 데이터들은 보존이 된다는 걸 알 수 있습니다.

 

Httpd import/export

 

<httpd import/export 실습>
1. httpd image를 실행, 해당 컨테이너를 export
2. import로 이미지 저장 httpd:1
3. 실행 -> 실행불가
4. 2번 과정에서 어떤 cmd와 어떤 환경변수가 필요한지 확인 후 입력하여 이미지 만들기, httpd:2
5. 해당이미지가 정상 실행 가능한지 확인

h1이라는 이름으로 httpd 이미지를 실행시켜줍니다.

h1을 httpd.tar라는 이름으로 export 해줍니다.

ls 해보면 httpd.tar가 만들어진걸 확인할 수 있습니다. 

 

httpd.tar를 httpd:1 이라는 이름으로 import 해서 이미지를 가져옵니다.

 

가져온 httpd:1 이미지로 컨테이너를 생성하려고 하면 에러가 뜨면서 실행이 되지않습니다.

그 이유는 실행에 필요한 환경변수가 초기화되서 인데, 위에 alpine처럼 cmd 설정값만 입력해서는 실행이 되지않습니다.

 

httpd는 Cmd 외에도 ENV에 PATH값을 추가해줘야합니다. 

PATH값 확인을 위해 httpd:latest를 inspect 해봅니다.

 

-e 옵션은 환경 변수를 추가할 수 있습니다. -e 옵션을 줘서 PATH를 설정해줍니다.

설정값을 복사 후 docker run -itd -e 옵션 뒤에 붙여 넣어 줍니다.

 

확인을 위해 'test http'문구를 설정 후 웹에서 확인해 봅니다.

'IT > Docker' 카테고리의 다른 글

[Docker] DockerFile  (0) 2022.12.09
[Docker] Network  (0) 2022.12.09
[Docker] Volume 생성, 연결  (0) 2022.12.09
[Docker] httpd-php와 mysql연동  (0) 2022.12.09
[Docker] HAproxy를 사용해서 Container 접속하기  (0) 2022.12.08
복사했습니다!