컨테이너 가상화 기술, 컨테이너를 더 쉽게 사용할 수 있게 만든 것
리눅스 컨테이너(LXC) 기술은 원래 존재했지만 핵심 기술은 cgroups 와 namespaces
cgroups는 메모리, cpu 등 자원에 대한 격리를 지원,namespaces는 파일, 프로세스 등을 격리
-> cgroups 와 namespaces를 이용해서 컨테이너를 좀 더 쓰기 쉽게 만든 기술
# 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 : 리부므 이미지
# 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
퍼블릭 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하시면 됩니다~ 따로 뭐 프로젝트 만드실 필요 없어요~