Search

#002 #커밋하기

공부의 순서

// 공부의 순서 1. 파이썬 (언어) 2. 자료구조 (알고리즘) - 6개월 3. 운영체제, 네트워크 4. 자바 5. 네트워크 프로그래밍 (소켓/프로토콜) 5-1. 단방향/반이중/전이중 6. RDB 7. 서블릿 8. 스프링부트 (Rest) 9. HTML/CSS/Javascript 10. SSR 프로젝트 11. RESTAPI 전환 (보안 - 해시, JWT, RSA) 12. 리눅스 (Shell) 13. Docker 14. AWS(클라우드 - 공부 - VPC,LB,IAM.. 등등) 15. 노가다 배포 (EC2) - 고생 16. 도커 배포 (EC2) - 고생 17. 오케스트라 (쿠버네티스)
JavaScript
복사

docker ps로 현재 docker이미지 상태를 알 수 있다.

docker ps
JavaScript
복사

아래 명령어를 사용해서 tomcat이 없으면 자동으로 다운로드 한다.

docker run -d -p 9000:8080 tomcat:10
JavaScript
복사

docker ps 해보면 아래처럼 뜨게 된다.

포트 포워딩 된걸 확인할 수 있다.

커서를 켜서 도커 연습세팅해보자.

도커 실행해보기

docker exec -it 0ae3 bash
JavaScript
복사
위의 명령어로 실행할 수 있다.

Tomcat 디렉토리 구조

// 리스트 명령어이고 내부 구조를 확인할 수 있다. ls
JavaScript
복사
Tomact 디렉토리 구조 설명

webapp.dist 디렉토리 구조

// webapps.dist 디렉토리로 이동 // 설명 : 기본적으로 제공되는 웹 애플리케이션들이 위치하는 디렉토리이기 때문에, // 이 디렉토리로 이동하여 기본 웹 애플리케이션을 확인하거나 수정할 수 있다. cd webapps.dist // 이동후 ls명령어 실행 : 내부 구조를 확인한다. ls
JavaScript
복사
webapp.dist 디렉토리 구조 설명

webapps폴더에 ROOT 디렉토리 만들기

//ROOT 폴더를 만들 때는 mkdir명령어를 사용한다. mkdir ROOT
JavaScript
복사
//ROOT 폴더 내에서 vi 사용해서 실행해보자. vi index.html
JavaScript
복사
ROOT폴더 내에서 vi명령어를 실행하였더니 아무것도 나오지 않았다. apt-get으로 메뉴판을 업데이트 해야된다.

메뉴판 업데이트

//메뉴판 업데이트 apt-get update
JavaScript
복사
근데 이렇게 해도 이거 컨테이너가 꺼지면 다 사라진다. 조심!!!
// 나노설치 apt-get install nano
JavaScript
복사
나노는 메모장 같은거

index.html 작성

nano index.html
JavaScript
복사
실행해서 들어가보면, 위처럼 화면이 나온다.
ctrl + X → Y 엔터 하면 index.html이 저장이 되고, ls 명령어로 확인해보면 ROOT폴더 옆에 파일이 생성 된게 보인다.
근데 사실 이 index.html을 ROOT폴더 안에 만들었어야 했는데, 잘못했다 ㅠ mv 명령어를 사용하여 index.html ROOT폴더로 옮기겠다.
mv /usr/local/tomcat/webapps/index.html /usr/local/tomcat/webapps/ROOT/
JavaScript
복사
그리고 localhost:9000으로 접속하면 포트포워딩이 되어 index.html을 찾는다. 그래서 위 화면 처럼 출력이 된다.

주의 할 점

이미지는 컨테이너가 꺼지면 다 날라가니까 꼭 주의 하도록 하자. 저장하고 싶다면 커밋을 해야된다.

커밋하기 - 일단 bash에서 빠져나와야된다.

ctrl + P / ctrl + Q 하면 bash를 종료하는 것이 아니라 잠시 빠져나온다.
docker ps 명령어로 해당 이미지의 containerID를 찾는다. 여기서는 0ae3
docker commit 0ae3 chugue85/tomcat:10
JavaScript
복사
위의 커밋 명령어를 사용해서 이미지 컨테이너ID / 나의이름 / 태그 를 조합해서 명령어를 실행한다.
그럼 이렇게 도커에서 확인이 가능하다.
docker images로도 확인이 가능하다.

이미지를 지워보자.

이렇게 지울수 있는데, 이걸 지우고 다시 들어가면 아무것도 실행할 수 없다. 다 날라갔기 때문에

다시 들어갔을 때 확인이 될까?? 다시 실행해보자.

다시 실행해보면??
위 처럼 아무것도 남아있지 않다. 그러므로 작업하다가 커밋하는 것이 매우 중요하다.

이미지 삭제 & 확인

docker ps -a 는 아까 날라간 이미지도 다 있는데, 이걸 다 지울려면 GUI로 다 삭제하면 된다.
이렇게 지우고 docker ps를 해보면 아무것도 나오지 않을 것이다.

이미지들 확인

docker images
JavaScript
복사
docker images로 최근 사용한 이미지들을 볼 수 있다.

이미지를 커밋 하는 방법

docker commit 0ae3 stephen85-tomcat10
JavaScript
복사
이미지를 구우면서 해시를 만들어 준다.
도커 이미지스로 확인이 가능하다.

내가 구운 이미지 다시 실행

docker run -d -p 8000:8080 stephen85-tomcat10
JavaScript
복사
내가 만든 이미지를 실행해보자.
명령어 설명
실행하면 아래 해쉬도 같이 반환한다.
이렇게 구운 이미지가 실행이 가능하다.
- 근데 이게 다른 곳에서 실행이 될까??? 안된다. - 하지만 도커허브에 업로드 해놓으면 어디서든지 이게 실행이 가능하다. - 도커허브는 깃허브같은 곳이라서, 만약 다른 곳이 도커프로그램이 있으면 이미지를 다운받아서 실행할 수 있다.
쿠버네티스는 도커허브를 쓰고, AWS는 ECR을 사용한다.

도커 허브에 push 하기

커밋먼저

docker commit 1560 <도커허브ID>/<앱이름>:태그
JavaScript
복사
커밋을 할 때는 꼭 자기 도커허브ID/앱이름:태그 컨벤션을 지켜주자.
docker images로 push 하고 싶은 이미지 이름을 확인한다.
docker push stephen85/tomcat:10
JavaScript
복사
도커를 허브로 푸시할 수 있다.
Denied 메시지를 받았을때
정상적으로 푸시가 되었다면 Repositories에서 확인이 가능하다. 그리고 커밋컨벤션을 잘 지켜줘야지 충돌이 나지 않으니 꼭 주의 하자!!
이제 이건 어디서든 내려 받을 수 있다. 이게 왜 좋냐???? 이제 환경이 달라도 해당 프로그램을 실행할 수 있다.

요약 정리

1. docker commit 컨테이너ID 자기아이디/앱이름:태그 2. docker push 자기아이디/앱이름:태그
JavaScript
복사