[Cloud] Docker

호호빵·2022년 6월 20일
0

Cloud

목록 보기
3/5

Docker

  • 컨테이너 가상화 기술, 컨테이너를 더 쉽게 사용할 수 있게 만든 것

  • 리눅스 컨테이너(LXC) 기술은 원래 존재했지만 핵심 기술은 cgroups 와 namespaces

  • cgroups는 메모리, cpu 등 자원에 대한 격리를 지원,namespaces는 파일, 프로세스 등을 격리

    -> cgroups 와 namespaces를 이용해서 컨테이너를 좀 더 쓰기 쉽게 만든 기술


도커 이미지

  • 컨테이너를 실행하기 위해 필요한 파일들의 모음집
    (이미지를 만들기위해 Dockerfile 파일 생성)
# Dockerfile
FROM openjdk:8-jdk-alpine 		          // 베이스 이미지 파일
COPY build/libs/demo-0.0.1-SNAPSHOT.jar app.jar // 컨테이너 내부로 파일 복사
ENTRYPOINT ["java","-jar","/app.jar"]      // 컨테이너 생성되면서 실행


# Terminal
docker build -t {이미지명}:{태그}
docker build -t my-springboot

도커 컨테이너

  • 실제로 실행되는 프로세스
# 컨테이너 생성     
docker run --name sb -p 8080:8080 -d my-springboot
컨테이너 이름 : sb, 호스트 포트 : 8080, 컨테이너 포트 :8080
이미지명 : my-springboot

docker ps // 생성된 컨테이너 확인, ps:프로세스
docker stop sb  // 컨테이너 정지
docker ps -a  // 정지된 컨테이너 확인
docker rm sb  // 정지된 컨테이너 삭제  rmi : 리부므 이미지

DB 컨테이너 생성

# dbeaver에서 생성(allowPublicKeyRetrieval = TRUE)
# mydb/Table/NewTable - 데이터 저장

# 삭제, 재생성 후 데이터 확인
docker stop some-mysql
docker rm some-mysql
docker run --name some-mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 
													-d my sql
# 컨테이너 레이어 파일 저장
mkdir mysql-data

docker stop some-mysql;
docker rm some-mysql;
docker run --name some-mysql -v c:/mysql-data/var/lib/mysql
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -d my sql

실습

container - 객체, image - 클래스
gradle - (gradle build -x test)
Dockerfile 생성
docker build -t my-springboot   // 이미지 생성
docker run --name sb -p 8080:8080 -d my-springboot  // 컨테이너 생성

-> 확인 localhost:8080

레이어

이미지 레이어

  • 이미지를 만들 때 생성되는 파일 시스템
  • 컨테이너를 삭제하고 다시 만들어도 사라지지 않음

컨테이너 레이어

  • 컨테이너를 실행하면 생성되는 파일 시스템
  • 컨테이너가 삭제되면 레이어도 삭제되기 때문에 컨테이너를 다시 생성해도 존재하지 않음

이미지 활용

# 도커 리포지토리 만들기

# 태깅 
docker images
docker tag my-springboot ilov/my-repo
		//    이미지명	리포지토리명/ 태그
# 로그인
docker login

# 푸쉬
docker push ilov/my-repo

EC2 활용

퍼블릭 ip 연동 후 도커 설치(vim install.sh -> sh install.sh)

docker pull ilov/my-repo

docker run --name sb -p 80:8080 -d my-springboot

프론트엔드 docker 만드실 때 그냥 아무 폴더에 index.html,nginx.conf,dockerfile 이 3개 놔두고 cmd열어서 build하시면 됩니다~ 따로 뭐 프로젝트 만드실 필요 없어요~

profile
하루에 한 개념씩

0개의 댓글