티스토리 뷰

Docker

docker import, export

뵤루 2022. 5. 31. 14:12

일반적으로 도커 컨테이너에서 작업하는 내용들은 컨테이너가 종료되면 사라진다

이것을 commit하면 나중에 해당 이미지로 다시 컨테이너를 실행하여 작업했던 내용을 다시 사용할 수 있다

 

docker commit [컨테이너명] 하면 bangle이미지가 됨 (<none>상태)

docker commit [컨테이너명] [레포지토리]:[태그]하면 된다

 

<none> 상태로 만들어진 image

 


 

docker import -> 컨테이너로 import 함

docker export -> 이미지파일로 export 함

 

이미지파일을 아카이브할때

docker save -o image.tar alpine centos:7

 

이 아카이브파일을 다시 풀어야할때

 

일단 alpine과 centos:7을 지운다

 

이 상태에서

docker load -i image.tar

하면 아카이브가 풀린다

 

복구된 이미지들

 

docker run -itd --name c1 centos:7

echo 'DDU' > DDU.txt <- 텍스트파일에 해당 문구를 적음

 

 

docker export -o test.tar c1

컨테이너를 아카이브(export)

 

tar tvf test.tar | grep DDU.txt

하면 이것만 뽑아서 아카이브 해제 가능

 

텍스트 파일만 아카이브 해제되었다

 

docker import test.tar centos:c1

이렇게 가져오면 컨테이너는 이미지로 import된다

 

c1이 image로 import된 모습

 

docker run -itd --name c2 centos:c1

이렇게하면 설정이 초기화되기때문에 실행이 불가능하다

 

docker import --change 'CMD ["/bin/bash"]' test.tar centos:c2

이렇게하면 실행 불가능했던 c2를 다시 실행 가능하게 할 수 있다

*이미지를 실행할 때 수행할 명령어

 

docker run -itd --name c3 centos:c2

이후 이렇게하면 실행됨

 

 

docker run -itd -p 8080:80 --name h1 httpd

docker cp index.html h1:/usr/local/apache2/htdocs/index.html

docker export -o http.tar h1

여기까진 괜찮음

docker import httpd.tar DDU:httpd

이러면 설정파일이 초기화된다

docker images하면 이미지는 있는데 실행은 불가능함

 

docker run -itd -p 9090:80 --name h2 DDU:httpd

이러면 실행불가능함

여기서 커맨드를 바꿔줘야한다 (지금 상태는 httpd-foreground)

docker import --change 'CMD ["/usr/sbin/httpd -D FOREGROUND"]' http.tar DDU:httpd1

docker run -itd -p 10000:80 --name h2 DDU:httpd1

이렇게 해보면 잘될것이다

 

이 다음에 환경변수를 path로 집어넣어야 정상적으로 실행된다

 

docker run -itd -p 8080:80 --name n1 httpd

docker cp index.html h1:/usr/local/apache2/htdocs/index.html

docker export -o http.tar h1

docker import --change 'CMD ["httpd-foreground"]' http.tar DDU:http

docker -itd -p 65000:80 -e "PATH=/usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" --name h2 DDU:http

*-e : path 경로 옵션

 

inspect에서 확인해보면 환경변수에 따라 있고없고가 실행 가능 여부를 나눈다

환경변수가 null이면 실행을 못함

 

.bash_profile에 디렉터리를 추가하면 경로를 이동하지 않고 실행파일을 사용할 수 있다

디렉터리:디렉터리:디렉터리 형식으로 나뉨

 

추가하면 source .bash_profile로 다시 받아온다

docker에서 command가 httpd-foreground상태인 이미지파일에 path 경로를 집어넣은 것도 이런 원리

 

 

'Docker' 카테고리의 다른 글

Dockerfile  (0) 2022.06.03
docker 컨테이너 link, mysql 컨테이너 생성  (0) 2022.06.01
Object Storage를 이용한 Docker httpd 이미지 업로드  (0) 2022.05.30
Docker 기본 조작  (0) 2022.05.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함