[4기] 백엔드 개발자 부트캠프 "오르미" ~ing/[4기] 백엔드 개발자 부트캠프 오르미 수업 복습

[4기] 106일차 Docker2

sohee99 2024. 4. 16. 16:42

오늘의 학습!!! 어제 배운 docker 두번째 시간!!!!

 

오늘은 dockerfile을 만들어 레시피처럼 작성 후 도커이미지 만들기!!!! 

 

 

c : users 쪽에 dockerfile을 만들어 이렇게 적어주었구욥!!! 

 

wsl 입력 후 docker build 를 통해 새로운 이미지를 형성하고 이름은 nginx_with_dockerfile 별칭은 01로 하게 되면!

 

 

이렇게 이미지가 생성 빠밤 😊

 

대박 신기... 똑똑하네요 ㅋㅋㅋㅋ 파일찾아서 잘 해주는군 

 

확실히 이게 어제 이미지에서 컨테이너 생성하고 수정하고 다시 이미지만드는 방식보단

 

훨씬 간단하군 ^^

 

 

이렇게 만들어진 이미지를 통해 런을 하여 컨테이너를 만들면 

 

요렇게 잘 런 되네요 ㅎㅎㅎ 그럼 이렇게 연결된 9090포트로 들어가보면!

 

 

이렇게 web server 등장!!!!!!ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

 

신기해신기해 

 

이 과정을 그림으로 설명하면 

 

출처 - 이스트소프트 조성연강사님

 

이렇게 내부적으로 처리한다는데.. 

 

되게 저에게 보여지는 건 간단한데 내부적으로 많은 일들이 있었네요 ㅋㅋㅋㅋ,,,

 

명령어가 실행될때 컨테이너를 생성하고 이미지 레이어로 커밋 > 이과정을 여러겹 쌓여서 하나의 이미지 생성!!! 

 

이제 이미지를 내 docker hub에 업로드 하고 싶을땐?

 

docker desktop 로그인 후 

 

 

docker images; 을 통해 이미지들을 볼 수 있고! 도커 데스크탑에서도 볼수있지만 ㅎㅎ

 

docker / tag / 이미지명:태그 / 원하는이미지명:태그 

 

이렇게 작성하면?

 

 

이렇게 이미지에 뜨고 !

 

 

push to Hub를 누르면!

 

 

이렇게 hub에 띄워집니다!!!!!! 짝짝짝👍

 

Docker 주요 명령어

 

컨테이너 관련 명령어 

 

docker run [옵션] 이미지

 

컨테이너를 생성하고 실행!!!

 

옵션 

 

  • -it
    • 컨테이너를 인터랙티브 모드로 실행합니다. 인터랙티브 모드에서는 컨테이너 내에서 자유롭게 명령어를 입력할 수 있습니다.
  • -d
    • 컨테이너를 백그라운드에서 실행합니다. 백그라운드에서 실행되기 때문에 터미널은 실행되지 않습니다.
  • -p
    • 컨테이너의 포트와 호스트의 포트를 연결합니다.
  • --name
    • 컨테이너에 이름을 지정합니다.

 

 

이렇게 it를 통해 명령어를 입력할 수 있는 도커의 exec에서 입력하는것처럼 동일하게 사용가능!!!

 

 

docker ps [옵션]

 

- 실행중인 컨테이너 목록 표시 

 

 

docker ps 를 입력하면 status  up인 상태만 확인 가능하지만,

 

-a 옵션을 사용하면 중지된 컨테이너 까지 확인 가능하다! 위에 표시된status를 보면 exited 까지 다 볼 수 있다!

 

docker stop 은 실행 중인 컨테이너 중지!

 

 

이렇게 stop을 사용하면 실행중 컨테이너 중지되고 start를 사용하면 다시 실행된다! ㅎㅎㅎㅎ

 

docker restart

 

docker restart [컨테이너 ID 또는 이름]

 

실행중인 컨테이너 다시 실행!

 

docker rm

 

docker rm [컨테이너 ID 또는 이름]

 

컨테이너 삭제!

 

docker attach

 

docker attach [컨테이너 ID 또는 이름]

 

실행중인 컨테이너의 터미널 접속 - 컨테이너 내에서 명령어 입력 후 실행 가능

 

docker commit

 

docker commit [컨테이너 ID 또는 이름] [새 이미지 이름]

 

실행 중인 컨테이너를 이미지로 저장!

 

요건 전날에 배웠을 때, 컨테이너 수정 후 실행상태에서 nginx_new 새로운 이미지를 저장하여 

동일한 형태의 컨테이너를 만들 수 있는 거!!! 어제 배운 commit ㅎㅎ

 

이미지 관련 명령어

 

docker pull

 

docker pull [이미지 이름]

 

이미지를 다운 받는데 보통 docker hub에서 다운받는다! 

 

어제 nginx 다운 받은 것처럼 

 

검색 후 풀 받기 ㅎㅎ

 

docker images

 

docker images [옵션]

 

내가 다운로드한 이미지 목록을 표시한다. 

 

 

이렇게 ㅎㅎㅎㅎ 이미지에 있는 것들 다 보여주네염 ㅎㅎ 여기서 옵션을 통해 목록을 필터링 할 수 있다는거!

 

docker build

 

docker build [옵션] [Dockerfile 경로]

 

 build를 통해 Dockerfile을 이용해 이미지를 빌드! 했지요~~~

 

docker tag

 

docker tag [이미지 ID 또는 이름] [태그]

 

이미지 별칭같은거!!!!! ㅎㅎㅎ 이미지의 이름을 바꿀때도 사용! 

 

태그를 지정하지 않으면 latest 로 지정된다는거!

 

 

하나는 지정하지 않았을 떄, 하나는 01로 지정했을때 !

 

Docker compose

 

여러개 묶어서 하나의 파일로 만든게 docker-compose.yml

 

즉 컴포즈란 여러개의 컨테이너를 하나의 묶음으로 관리할 수 있게 도와주는 도구

 

웹 어플리케이션을 테스트를 하기 위해 2개의 웹서버,데이터베이스 컨테이너를 실행해야할 때, 

 

두개의 컨테이너를 하나로 묶여 두개 다 실행되는것!

 

출처 - 이스트소프트 조성연강사님

 

도커 컴포즈 설치

 

docker-compose --version

 

docker desktop을 설치하면 자동으로 이미 설치되있네요!!ㅎㅎㅎ

 

 

이렇게 버전 잘 나오는걸 볼 수 있어욥!!! ㅎ!!

 

 

docker-compose.yml 예시 ㅎㅎㅎ 

 

web과 db 두개의 서비스!! 

 

컨테이너 이름 부터 볼륨까지! 쓸 수 있다아~~~~~~~~~~~~~~~~!!!

 

런할 때 우리가 작성한 볼륨 환경변수 설정 들이 docker-compose에서 사용이 된다는거!!!

 

오늘 도커에 대해 배웠는데엽!!!!!!! 

 

왜 저번엔 우리 컴터가 에러를 겁나 띄웠는데 잘될까요??????????? 이유를모르겠지만 이대로만 유지해주렴 ㅎㅎㅎㅋㅋ

 

 

도커 은근 재밌네요 ㅎㅎㅎㅎㅎ 

 

복습 후 스프링 책 읽으면서 공부 하러 떠나보겠습니다!!!

 

오늘도 열심히 공부했구!

 

내일도 파이팅 ㅎㅎㅎ🖍🖌😊