01. Java
02. git
03. Database
04. Jsp [Server]
05. HTML,CSS
07. JS
06. 미니프로젝트-2W
08. SpringFramework , SrpingBoot
19. 중간프로젝트 (1M)
10. Linux 명령어
11. AWS
12. Docker(v)
13. React JS [Front-end]
14. App - Android
15. 최종프로젝트 (1M)
로컬에서 도커허브를 사용하려면 도커에 로그인 해야 함
개인 레파지토리로 올릴 떄는 이름이 <계정명/이미지:태그> 형식을 따라야 함
**``도커로그인
docker login
docker tag <name명:태그명> <변경할이름:태그명> docker tag myweb:v3 hs/myweb:v3
docker push 이미지명:태그명 docker push hs/myweb:v3
도커허브에 pull
docker pull 이미지명:태그명 docker pull hs/myweb:v3
docker run --name webserver3 -d -p 8383:8484 --net web-network -v webserver-upload:/upload hs/myweb:v3
회사 내부망만 허용되고 외부 원격 서비스가 차단된 경우 도커 허브 이용 불가
Registry는 도커허브처럼 원격 저장소로 사용할 수 있는 도커이미지
Registry 사용방법
- 로컬에서 동작되는 Registry에 도커 이미지 올리기
- 서버에서는 Registry를 컨테이너로 동작
<localhost:5000/이미지:태그>
형태로 push- 외부에서 사용하려면 <아이피주소:5000/이미지:태그> 형태로 push,pull
docker pull registry docker run -d -p 5000:5000 --restart always --name registry registry:2 docker ps
- registry에 올리기 위한 이미지생성
docker tag myweb:v1 localhost:5000/myweb:v1
- push하기
docker push localhost:5000/myweb:v1
- 이미지 삭제 후 pull
docker rmi localhost:5000/myweb:v1
docker pull localhost:5000/myweb:v1
- Registry 컨테이너에서 확인
docker exec -it registry /bin/sh
도커컴포즈 설정 파일
은 YAML또는 YML로 생성
docker compose version
- yaml파일 포맷의 버전을 나타냄
- version 속성은 compose v-2.0이상부터 생략 가능
- 서비스는 도커 컴포즈로 생성할
컨테이너 옵션을 정의
하고, 이 항목에 쓰인 각 서비스는 컨테이너로 구현됨- 서비스의 이름은 service의 하위 항목으로 정의하고, 컨테이너의 옵션은 서비스 이름의 하위 항목에 정의
- 네트워크는 최상위 networks 섹션 아래에 네트워크 이름을 지정하여 만들 수 있음
- 네트워크 서비스는 서비스 하위 섹션에서 네트워크 이름을 지정해 네트워크에 연결 가능
- volumes섹션에서는 여러 서비스에서 재 사용할 수 있는 명명된 볼륨 구성 가능
# 주석. 들여쓰기 (탭x, 스페이스바) # version: "3.9" # 컴포즈 2.0 이상부터 생략가능 name: my-compose services: server1: # 서비스명(컨테이너 이름) #build: # 사용할 도커파일 이미지 경로 # C:\Users\Windows\Desktop\Docker image : hs2716/myweb:v3 ports: - "8585:8282" # 클라이언트에서 8585요청이 들어오면 8282 서비스로 연결 #volumes: # 호스트디렉토리 직접 마운트 할경우 # - ./host_dir:/home/ubuntu/upload volumes: # 볼륨설정 (볼륨명 : 컨테이너폴더) , 새로운 볼륨과 함꼐 마운트 - test-volume:/home/ubuntu/upload networks: - test-network depends_on : # 이 서비스가 먼저 동작된 후에 server1이 실행됨 - compose-mysql compose-mysql: image: "mysql:8.0.41" ports: - "3308:3306" networks: - test-network environment: # mysql이미지의 필요한 환경변수 전달달 MYSQL_ROOT_PASSWORD: "1234" volumes : # 볼륨명 test-volume: networks: # 네트워크 test-network:
services
server1
,compose-mysql
: 컨테이너 이름
build
: 빌드할 도커파일의 위치image
: 도커 허브 또는 로컬에 있는 이미지 사용용ports
: 포트포워딩 ex) 0000:1111 -> 0000으로 접속시 1111로 포트포워딩volumes
: 볼륨설정
- 볼륨명:컨테이너폴더위치
- ex) test-volume:/upload
- test-volume : 볼륨명
- /upload : 해당 볼륨을 컨테이너 내부의 이 경로로 연결(마운트)
networks
: 사용할 네트워크를 지정depends_on
: 서비스의 실행순서를 지정해주는 곳으로 이 곳에 선언된 서비스가 먼저 실행된 후 해당 서비스가 실행됨
- 위의 코드에서는
compose-mysql
서비스가 실행된 후server1
이 실행
environment
: 해당 이미지가 필요로 하는 환경변수 전달
volumes
- 새로운 볼륨을 생성함
networks
- 새로운 네트워크 생성
하나의 큰 애플리케이션을 여러 개의 작고 독립적인 서비스들로 나누어 개발하고 운영하는 소프트웨어 아키텍쳐 스타일
높은 응집도
- 하나의 비지니스 로직은 하나의 마이크로 서비스로 처리
- 관련 있ㄴ는 코드들은 최대한 모음
- 마이크로서비스들간 인터페이스를 최소화
동기적 통신
으로 요청을 보내면 응답이 올 때까지 대기 -> 응답이 오지 않으면 응답을 받을 때까지 처리를 멈추고 다음 단계로 진행 불가표준화된 인터페이스
-> 즉 HTTP 메서드 (GET,POST,PUT,DELETE 등)을 사용
- REST(Representational State Transfer)
- 웹의 기존 기술(HTTP,URI 등)을 잘 활용해 자원을 정의하고 자원에 대한 행위를 명확히 구분하는 아키텍쳐 스타일
- RESTful API
- REST원칙을 따르면서 설계된 API로, 클라이언트가 HTTP 메서드를 이용해 서버의 자원에 접근하도록 설계된 API
비동기적 통신
으로 이벤트를 발생시키면, 수신자가 나중에 이를 처리하는 형식NoSQL데이터베이스로 데이터를 메모리에 저장해서 매우 빠르게 읽고 쓸 수 있음
로그인 정보나 채팅 메시지처럼 실시간 처리가 필요한 데이터를 다루는데 많이 사용됨
리스트, 집합, 해시 등 다양한 데이터 구조를 간단하게 저장하고 사용할 수 있음음
도커 Redis 설치
docker run -d --name redis -p 6379:6379 redis docker run -d --name redisinsight -p 5540:5540 redis/redisinsight:latest
+이벤트 중심 아키텍쳐에서 가장 많이 사용되는 비동기 메시지 큐 시스템
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management