'도커 이미지 생성'에 해당되는 글 1건

  1. 2018.07.01 도커 개인 이미지 만들기(컨테이너 테스트하는 법)
2018. 7. 1. 14:12

앞에서 설명한, Docker에서 아파치 재시작이 안되서, 


컨테이너 안에서 아파치 설정을 바꾸고, 그때그때마다, 이미지를 만들어서, 


그 이미지로 컨테이너를 생성해서, 에러나, 실행 유무를 확인했다.



먼저, 내가 작업하고 싶은 컨테이너 안에 들어가서 설정들을 바꾼다.


그리고, 


그 바뀐 설정들에서, 스냅샷같은거를 만들어야하는거다.


그래서 커밋을 한다.



#커밋(이미지 생성)

docker commit -p [컨테이너ID] [원하는저장 이미지명]:[버젼명_태그:생략가능]  

docker commit -p 1e3bd8faf374 tysondev


난  1e3bd8faf374 컨테이너를 tysondev란 이미지로 생성했다.


버젼명은 안썼는데, 생략가능하다. 생략하면, latest로 자동입력됨.


이때, 컨터이너에서 나가지 말고, 창을 하나 더 열어서, 새로 접속해서 작업하는게 편하다.


그리고, 이미지를 확인해보자~!


#이미지 확인(아이디)

docker images 


REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

tysondev           latest              2aa8258fdbb1        9 hours ago         712MB



이렇게 생성이 될거다.



그리고, 그 이미지로 컨테이너를 새로 생성한다.

#컨테이너 생성

docker run -p [외부포트:내부포트] -d -v [외부공유폴더:내부공유폴더] [이미지이름:버젼]

docker run -p 8383:80 -d -v /Users/tyson13/Documents/workspace/docker/front:/var/www/html tysondev:latest



#컨테이너 실행 확인

docker ps -a 


머 밑에처럼 나온다.


2번째꺼는 내가 지금 샐행중 컨테이너고, 그 위에꺼가, 방금 생성한거다.



CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                  NAMES

b1c3e235a86d        cherrydevos2:latest   "/bin/sh -c '/usr/sb…"   1 min ago         Up 8 hours          0.0.0.0:8383->80/tcp   friendly_kalam

a23fc3e235a8        origianl:latest   "/bin/sh -c '/usr/sb…"   8 hours ago         Up 8 hours          0.0.0.0:8385->80/tcp   first saaam



자, 근데, 실행이 안되어 있으면, 로그를 확인한다.



#실행 중단되어 있으면, 로그확인

docker logs b1c3e235a86d



#실행중이면, 컨테이너 접속

sudo docker exec -it b1c3e235a86d /bin/bash   



이런식으로 해서, 원본 컨테이너에서 설정을 바꾸면서, 계속 이미지를 만들어서 테스트 해보았다.


그리고, 이미지를 저장해서, 저장해놓던지, 레파지토리에 올리면 된다.


난 개인 소장용으로, 내 개인정보등도 세팅을 해놓아서, 그냥 저장해서 가지고 있다.



#도커 이미지 백업 (파일로 저장)

$ sudo docker save -o [저장할이름].tar [이미지 이름]

$ sudo docker save -o build-machin.tar build-machin


이런식으로 저장하면,  .tar파일이 생성된다.


이 파일을 회사사람들에게 공유해주던지, 가지고 있다가, 이 설정쓸때,


도커에서 불러오면 된다.


tar 로 묶어서 백업한 경우 load 명령을 사용하여 도커의 로컬 이미지 레포지토리에 넣어주어야 한다.

-i 옵션은 --input 임.

# docker load -i /root/container1.tar

확인을 위해 아래 명령을 입력해보자.

# docker images


이렇게 해서 사용하면 된다.


추가로, 설정 바꾸던, (원본 컨테이너에서는 나가지 말고, 계속 접속해서 작업하기를 추천한다.)


나갔다가, 컨터이너 종료가 되면, 에러가 있을떄, 컨테이너가 재시작이 안된다....


진짜...멘붕옴....ㅠㅠㅠㅠ 그안에 설정바뀐거, 중요파일까지 넣어놓았으면, 최악이다.


그래서 중요파일들은 공유폴더를 사용해서만 하자~!



도커를 사용하면서 느낀건.....내가 생각한거처럼 많이 까는게 아니고, 진짜 최소만 불러와서, 쓰는개념이라고 생각해야한다.



그리고, 한 컨테이너에 다 설치하는게, 아니고, 여러 컨테이너들을 포트로 연결해서 사용하는 개념으로 사용해야한다.


여러컨테이너 만들기 위해서 COMPOSE라는것도 있는데, 걔는 아직....ㅎㅎ


다음 포스팅에서 Dockerfile 작성에 대해서 쓰겠다.

Posted by Tyson