일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 그리디 알고리즘
- java.io
- 디버깅
- join
- date_format
- 알고리즘
- 코테
- 프로그래머스
- 브론즈
- Java
- docker image
- 클라우드
- 전자레인지 문제
- docker
- Access Modifier
- 백준
- SQL
- DevOps
- greedy
- docker 개념
- Greedy 알고리즘
- sqlplus
- reference data type
- 탐욕 알고리즘
- 거스름돈
- Docker 핵심
- 서브넷
- MySQL
- 자바스크립트 기초
- debugging
- Today
- Total
나는매일가운데
Docker (1) docker 기본 본문
01. Docker
(1) MSA (Micro Service Architecture)
=> 개별 기능을 하는 작은 서비스를 각각 개발, 연결하여 운영하는 WEB Architecture
=> 복잡성의 증가, 다양한 언어로 개발, 빠른 개발 및 배포 주기로 인해 즉각적인 대응이 필요하다.
=> 장점 :
1.시스템의 확장성 증가
2.독립적인 서비스의 개발로 즉각 대응 가능
3. 하나의 서비스가 다운되더라도 전체 시스템이 영향 받지 않음
4. 대형 프로젝트에서 적합함
=> 단점 :
1. 다수의 서비스들이 분산되어 있기 때문에 개발 및 배포 복잡
2. 분산 시스템에 대한 이해도 필요
3. 테스트 및 디버깅 어려움
(2) 모놀리식 아키텍쳐
-> 하나의 어플리케이션에 여러 기능이 통합되어 있는 구조
-> 장점 : 개발이 편리하다 / 작은 프로젝트의 경우 모놀리식 아키텍쳐를 구현하는게 편할 수 있다.
-> 단점 : 유지, 보수에 어려움
2. Container 기술
(1) Container : SW개발, 배포, 실행을 위해 가상화한 기술로 호스트의 OS를 사용하여 여러 독립된 컨테이너를 활용할 수 있다. 컨테이너는 격리된 환경에서 APP, lib, 설정 파일 등을 함께 패키징하여 App이 돌아가는 환경을 동일하게 유지시켜준다. 또한 OS는 포함하지 않으므로 가볍고 빠르게 시작된다.
- 컨테이너간 통신은 사설IP로 통신하기 때문에 포트포워딩을 잘 해줘야 한다.
(2) 이미지 : 컨테이너를 이미지화 시켜 배포를 쉽게 하는 기술. 이미지는 그대로 실행 될 수 없고 CRI로 불러 run 명령어로 컨테이너를 실행 시킬 수 있다.
3. Docker
- docker는 컨테이너를 만들고 관리하는 것을 도와주는 도구이다.
- 한개의 컨테이너에 하나의 프로그램을 담는것이 적당하다.
(1) Docker에서 컨테이너 생애 주기
(2) Docker volume
- 컨테이너의 데이터를 저장하고 관리하는 공간
- 여러 개의 컨테이너에서 동일한 볼륨을 공유하여 사용이 가능하다
- 컨테이너가 지워져도 볼륨은 지워지지 않는다.
02. Dodcker 실습
(1) Docker 명령어
docker ps –a //Docker container 목록 조회
docker images // Docker image 목록 조회
docker run -–name ex001 –d –p <Host port>:<Container img port>
<옵션>
1. --name : 생성할 컨테이너의 이름 지정
2. -d (--detach) : 컨테이너를 백그라운드에서 구동한다는 의미
=> 이를 생략하면 컨테이너 내부에서 실행하는 앱의 상태 로그가 계속 화면에 표시됨
3. -p : 컨테이너의 포트 설정 (포트 포워딩 설정 가능)
=> 외부에서 <Host Port>로 접근하면 <컨테이너 이미지 포트>로 포트포워딩 해준다.
=> 정해진 포트가 존재할 시 (mySQL : 3306 / tomcat : 8080 ...) 이에 맞게 맵핑 시켜줘야 연결할 수 있다.
docker run --name mysql001 -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.6
=> mySQL의 경우 3306 포트로 접근해야 한다.
=> MYSQL_ROOT_PASSWORD=root : mySQL의 접근하려면 root계정의 비밀번호를 지정해줘야한다.
=> mysql:5.6 : 이미지 이름과 태그
docker exec -it <컨테이너이름> bash
=> 실행 중인 컨테이너를 사용
(2) Docker 컨테이너간 네트워크 연결
docker network create <네트워크 이름>
-> 도커에서 컨테이너간 통신 할 네트워크 생성
docker run --name mysql00ex1
-dit // d, i, t 옵션이 합쳐진것 i: interactive (네트워크 통신) t: tty (콘솔창 출력)
--net=test_net // 네트워크 연결
-e MYSQL_ROOT_PASSWORD=root
-e -MYSQL_DATABASE=wp00db
-e MYSQL_USER=wp00kim
-e MYSQL_PASSWORD=wppass // DB에 접근할 정보 입력
mysql // 이미지 이름
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--default-authentication-plugin=mysql_native_password // 컨테이너 환경 변수 설정
docker run --name wp00ex2
-dit
--net=test_net
-p 8080:80 // 포트 포워딩 즉, 호스트의 8080포트로 접근 하면 맵핑 되어있는 80 포트로 연결시켜 준다.
-e WORDPRESS_DB_HOST=mysql00ex1 //wordpress 컨테이너에서 사용할 DB컨테이너 이름
-e WORDPRESS_DB_NAME=wp00db // 사용할 DB이름
-e WORDPRESS_DB_USER=wp00kim // DB 접근 정보
-e WORDPRESS_DB_PASSWORD=wppass // DB 접근 정보
wordpress //wordpress 이미지 이름
docker container inspect mysql00ex1 //컨테이너의 정보 확인 (네트워크 등등)
'Docker & Kubernetes > Docker' 카테고리의 다른 글
Docker(2) - 도커 이미지 생성 및 도커 레지스트리 (4) | 2023.05.01 |
---|---|
Docker (1) - Docker 사용하기 (0) | 2023.04.28 |