[ docker ] : Docker 이미지 개념
·
가상화 기술
이미지 구조레이어(Layer) 개념Docker 이미지란 여러 레이어(Layer)가 쌓여있는 형태각 레이어가 파일 시스템 변경사항(새 파일 추가, 수정, 삭제 등) 을 보관한다.이 레이어들은 읽기 전용으로, 최종적으로 합쳐서 하나의 최종 파일 시스템을 구성한다.Union FsDocker는 Union File System(Overlay2 등)을 사용해 여러 레이어를 “합쳐”(Union) 최종 파일시스템을 만든 뒤,컨테이너가 이를 읽기 전용으로 사용하고, 컨테이너 실행 중 발생하는 변경은 ”읽기-쓰기 레이어”에 기록한다.장점중복 감소: 공통 베이스 레이어(예: ubuntu, alpine 등)를 여러 이미지가 공유 가능 → 디스크 절약.캐싱: 도커 빌드 시, 이전 레이어가 변하지 않았으면 재빌드 불필요 → 빠른..
[ docker ] : 컨테이너 내부/ 외부 통신
·
가상화 기술
컨테이너를 생성할 때 -p 3307:3306 옵션을 사용했다면,외부(호스트)에서 MySQL 컨테이너에 접속할 때와 컨테이너 내부에서 접속할 때의 DB URL이 달라진다.✅ 1. 로컬(호스트)에서 MySQL 컨테이너에 접속할 때즉, 호스트 머신(예: 로컬 PC)에서 MySQL 컨테이너에 접근하는 경우:jdbc:mysql://localhost:3307/testdbp 3307:3306 → 호스트의 3307 포트를 컨테이너의 3306 포트로 포워딩했기따라서 로컬(호스트)에서 접속할 때는 localhost:3307을 사용해야 함✅ 2. 애플리케이션 컨테이너에서 MySQL 컨테이너에 접속할 때즉, 같은 Docker 네트워크 내의 컨테이너끼리 MySQL에 접근하는 경우:jdbc:mysql://mysql-db:3306..
[ docker ] : 실시간 로그 확인하기
·
가상화 기술
로그 확인하기명령어 : docker logs -f [컨테이너 이름]
[ docker ] : docker-compose 통신
·
가상화 기술
1. 실습을 위한 디렉토리 생성명령어 : mkdir ping-demo2. docker-compose.yml 생성docker-compose에서 연결할 네트워크를 지정할 수 있다.services: container-a: image: debian container_name: container-a command: sleep infinity #무한대기 - 아무것도 안해도 종료안되게하려고 networks: - my-bridge-net container-b: image: debian container_name: container-b command: sleep infinity #무한대기 - 아무것도 안해도 종료안되게하려고 networks: - my-bri..
[ docker ] : 네트워크 드라이버 기본 개념
·
가상화 기술
1. Docker 네트워크 드라이버 개요각각의 컨테이너 마다 개별적인 네트워크 망을 지닌다는 말이다.컨테이너들은 기본적으로 네트워크 격리 상태에서 동작Docker는 여러 형태의 네트워크 드라이버를 통해 컨테이너 간 통신이나 외부 접근 방식 을 결정2. BrdigeDocker가 제공하는 것중에 제일 기본 Bridge2-1 특징Docker 를 처음 설치하면 기본 브리지 네트워크(bridge)가 생성된다.컨테이너가 별다른 옵션 없이 docker run 될 때 연결되는 네트워크이다.호스트와 컨테이너 간, 컨테이너와 컨테이너 간 통신이 NAT를 거쳐 이루어진다.2-2 사용 예만약 특별한 설정 없이 컨테이너를 실행하면, 이 브리지 네트워크에 연결됨(docker0 인터페이스가 호스트 쪽에 존재 )컨테이너 간 통신 시..
[ docker ] : 도커 컨테이너의 매핑
·
가상화 기술
🔍 설명ports: - "2222:22" # 호스트의 2222 포트를 컨테이너의 22번 포트로 연결 (SSH 접속 가능) - "9090:8080" # 호스트의 9090 포트를 컨테이너의 8080 포트로 연결 (웹 서비스 접근 가능)이렇게 설정하면:호스트 머신에서 ssh -p 2222 user@서버IP 하면 컨테이너 내부(22번 포트)로 SSH 접속 가능브라우저에서 http://서버IP:9090 하면 컨테이너 내부(8080번 포트)에서 실행되는 웹 애플리케이션 접근 가능즉, 도커 컨테이너 내부 포트는 "외부에서 직접 보이지 않지만", 호스트 포트를 통해 접근 가능하다는 개념🛠 추가 개념: 포트 바인딩 없이 실행하면?만약 ports: 설정이 없으면, 컨테이너 내부의 8080 포트는 외부에서 접근할..
[ docker ] : 도커 컨테이너 재생성
·
가상화 기술
컨테이너 재생성 및 실행명령어 : docker-compose up -d --build --force-recreate🔍 옵션별 의미updocker-compose.yml 파일을 기반으로 컨테이너를 실행하는 명령어기존에 실행 중인 컨테이너가 없으면 새로 생성하고, 있으면 유지d (Detached mode, 백그라운드 실행)컨테이너를 백그라운드에서 실행터미널을 계속 점유하지 않고 실행됨실행 후 로그를 보려면 docker-compose logs 사용-build (이미지 다시 빌드)Dockerfile이 변경되었거나, 새로운 패키지가 추가된 경우 강제로 이미지를 다시 빌드기존에 빌드된 이미지가 있어도 다시 빌드-force-recreate (컨테이너 강제 재생성)기존 컨테이너가 있어도 삭제 후 새 컨테이너를 강제로 ..
[ docker ] : Linux에서 스프링 프로젝트 실행
·
가상화 기술
도커 Linux에서 프로젝트 실행1. 도커 컨테이너에 접속한다.명령어 : ssh root@127.0.0.1 -p 2222docker-compose.yml 파일에서 설정한 포트로 접속하면 된다.2. jdk를 설치한다.명령어 : yum install -y java-21-amazon-corretto-devel프로젝트에서 사용하는 jdk에 맞춰서 다운받아야함3. 사용할 프로젝트를 클론한다.명령어 : git clone [ 레포지토리 주소 ] git —version4. 프로젝트 클론 확인ls 를 사용하여 프로젝트가 클론된 것을 확인할 수 있다.5. 실행권한 추가명령어 : chmod +x gradlew보통 권한이 없을 거라서 build전에 실행권한을 먼저 준다.6. build명령어 : ./gradlew build j..
[ Linux ] : 한글팩 설치
·
가상화 기술
한글 팩 설치locale -a 로 한글팩 확인명령어 : yum install -y glibc-langpack-koecho 'LANG=ko_KR.UTF-8' | tee /etc/locale.confecho 'LC_ALL=ko_KR.UTF-8' | tee -a /etc/locale.confsource /etc/locale.conf 로 적용한다.실행될때마다 넣으려면 환경변수로 추가etc에 설정하면 다른 유저에도 한글을 사용할 수 있도록 설정된다.
[ docker ] : Amazon Linux 그룹 생성
·
가상화 기술
Docker - Amazon Linux 그룹 생성1. 유저의 상태 확인명령어 : id [ 유저이름]유저를 생성하면 본인을 기본 그룹으로 가진다.2. 그룹 생성명령어 : groupadd [ 그룹 이름 ]3. 그룹 생성과 동시에 유저 추가명령어 : useradd -g [그룹이름] [유저 이름]4. 유저에 생성한 그룹 추가 하기명령어 : usermod -aG [ 그룹이름 ] [ 유저 이름 ]유저의 그룹을 추가해준다.a : append G : group5. 속한 유저 확인하기명령어 : getent group [ 그룹 이름 ]getent group은 /etc/group에서 추가 그룹으로 속한 사용자만 보여준다. 기본그룹으로 가진애들 xx, 추가 그룹만그룹은 여러개 가질 수 있다.✔️ 그룹에 속해져 있는데 왜 안뜰..