본문 바로가기
  • 시 쓰는 개발자
CS 개념/Docker

docker에 대하여

by poetDeveloper 2023. 9. 5.

상당히 러프하게 작성해놓음..!!

 

도커의 흐름

  • 이미지를 내가 docker hub에서 pull로 받았음. 그럼 그 이미지는 나의 로컬 도커에 들어감.
  • 그 이미지 안에는 레디스 환경설정이 들어있음. 그 환경 자체를 나한테 넘겨준것
  • 이미지를 실행시키면 이미지가 컨테이너를 만들어줌. (여러개의 컨테이너 만들기도 가능)
  • 도커를 실행시킬 땐 docker -- 이런식으로 명령어를 치기 때문에 명령어를 치는 시점의 주소가 어딘지는 상관 없음
  • redis를 직접 까는게 아니고 도커허브에서 redis 이미지를 받고, 이미지 받아서 컨테이너 실행시키고, 컨테이너 들어가서 환경설정(이름 비밀번호 뭐 이런거)을 새로 설정해주고, 그걸 다시 이미지화 시켜서 내가 쓰는 것임. (ex. MYSQL같은 것도 이미지 받아서 컨테이너 만들고 테이블 수정하고 그걸 다시 이미지화 시키면 됨. )
  • 도커는 가상환경이라 내 ip랑 도커가 가지고 있는 ip가 다름.
  • 이미지 id는 고유값이고 그거로 만들어낸 컨테이너 id는 사람마다 다름.

 

주요 명령어

docker ps
현재 실행중인 컨테이너를 보여줌
docker ps -a
만들어진 컨테이너를 다보여줌
docker run -p 호스트포트번호:컨테이너포트번호 이미지ID
이미지 실행시켜서 컨테이너 하나 만들기

여기서의 p가 port forwarding(포트 전송)
ex. 외부에서 6379가 들어오면 내부 6379 포트로 연결해주세요
→ 6379(redis의 고유포트번호) : 6379(여긴 굳이 6379일 필욘 없음. 컨테이너의 포트번호)
인터넷은 컨테이너랑 내컴퓨터랑 연결을 안해주면 내컴퓨터까지밖에 접근을 못함.
그래서 특정 포트번호로 접근하려고 하는 요청이 들어오면 컴퓨터보다 더 깊숙한 컨테이너로 연결해달라 고 말하는 것임.

 

docker exec -it 이미지의컨테이너주소 /bin/bash
컨테이너 속(컨테이너라는 새로운 가상환경)으로 들어감.
  • 도커 데스크톱에서 컨테이너 실행하고, 더보기에서 open in terminal 하면 컨테이너로 바로 들어갈 수 있음.
  • 우리 플젝에선 신상정보(텍스트)만 redis에 넣음. 사진은 url형태로 redis에 넣어줌.
  • 사진파일은 S3에 넣음 (단, 모델에 맞게 사진을 전처리 하고 넣어야함)