'분류 전체보기' 카테고리의 글 목록 (2 Page) — SH's Devlog

분류 전체보기

DevOps/Docker

[Docker] 도커 이미지 - 개념정리 및 명령어(생성, 삭제, 추출)

이번 포스트에서는 도커 이미지에 대한 개념정리와 명령어, 그리고 관리하는 방법에 대해 정리하겠습니다. 도커 이미지를 빌드하는 방법은 크게 Dockerfile 없이 도커 이미지를 생성하는 방법과 Dockerfile을 이용하여 도커 이미지를 생성하는 방법 두 가지로 나뉩니다. 그래서 이번 포스트에서는 Dockerfile 없이 도커 이미지를 빌드하는 방법만 정리하고 다음 포스트에서 Dockerfile과 Dockerfile로 도커이미지를 생성하는 방법을 정리하겠습니다. 도커 이미지 모든 컨테이너는 이미지를 기반으로 생성되므로 이미지를 다루는 방법은 도커 관리에서 빼놓을 수 없는 부분입니다. 이미지의 이름을 구성하는 저장소, 이미지 이름, 태그를 잘 관리하는 것 뿐만 아니라 이미지가 어떻게 생성되고 삭제되는지, ..

DevOps/Docker

[Docker] 도커 컨테이너 - 컨테이너 로깅(Logging)

컨테이너 내부에서 어떤 일이 일어나는지 아는 것은 디버깅뿐만 아니라 운영 측면에서도 중요합니다. 어플리케이션 레벨에서 로그가 기록되도록 개발해서 별도의 로깅 서비스를 쓸 수도 있지만 도커는 컨테이너의 표준 출력(StdOut)과 에러(StdErr) 로그를 별도의 메타데이터 파일로 저장하며 이를 확인하는 명령어를 제공합니다. 이번 포스트에서는 도커 컨테이너 로깅에 대해 정리하겠습니다. json-file 로그 사용하기 json-file 로그 명령어 $ docker logs [Container Id or Name] docker logs 명령어를 사용하면 컨테이너의 로그를 확인할 수 있습니다. --tail 옵션 -> 컨테이너의 로그가 너무 많아 읽기 힘들다면 --tail 옵션을 사용하여 마지막 로그 줄부터 출력할..

DevOps/Docker

[Docker] 도커 볼륨 다루기

이번 포스트에서는 도커 볼륨을 다루는 방법을 정리하겠습니다. 위의 그림에서 보면 컨테이너 계층과 이미지 계층으로 나누어져 있는 것을 볼 수 있습니다. 보통 우리가 도커 이미지를 빌드할 때 docker build -t app [경로] 명령어를 실행하면 Dockerfile이라는 명세서를 기반으로 도커 이미지가 빌드가 됩니다. 이 이미지는 레이어 구조로 되어있는데, Dockerfile 내에 작성되어있는 여러 명령어들이 순차적으로 레이어가 쌓이듯이 저장된다고 보면 됩니다. 예를 들어, 우분투 이미지를 Base로 사용한다고 하면 Layer 1: Base 우분투레이어 설치 Layer 2: 우분투 운영체제에서 필요로하는 패키지들을 설치(ex. apt-get으로 패키지 설치하는 내용) Layer 3: 패키지를 설치(..

DevOps/Docker

[Docker] 도커 네트워크 이해하기

이번 포스트에서는 도커 네트워크에 대해 정리하겠습니다. 도커 네트워크 구조 기본적으로 도커를 호스트 운영체제에 설치하면 여러가지 네트워크 드라이버들이 설치되며 IP 주소를 순차적으로 할당하고 도커 컨테이너를 실행할 때 사용하고 싶은 네트워크 드라이버를 선택할 수 있습니다. 기본적으로 도커는 컨테이너에 172.17.0.x의 IP를 순차적으로 할당합니다. 확인해보기 위해 아래의 명령어로 컨테이너를 생성해줍니다. $ docker run -it ubuntu:focal 그리고 컨테이너 내부에서 ifconfig 명령어로 컨테이너의 네트워크 인터페이스를 확인하겠습니다. 위 스크린샷을 보면 lo 네트워크 인터페이스와 eth0 네트워크 인터페이스가 각각 172.17.0.1과 172.17.0.2가 할당된 것을 확인할 수 ..

DevOps/CI CD

[Jenkins] Slave(Agent) 노드 추가하기 (via SSH)

이번 포스트에서는 SSH 방식으로 통신하는 젠킨스 Slave(Agent) 노드를 추가하는 방법을 정리하겠습니다. Jenkins Slave(Agent) 노드에 SSH 키 설정하기 Master 노드에서 Slave 노드에 접속해서 사용하기 위해서는 Master노드와 Slave 노드가 SSH 통신을 할 수 있도록 만들어 주어야 합니다. 그러므로, Slave 노드에 SSH 키 생성을 하는 것 부터 시작하겠습니다. 1. 홈 디렉토리에 .ssh 디렉토리를 생성 # ~/.ssh 디렉토리 생성(이미 존재한다면 생략) $ mkdir ~/.ssh 먼저, 연결할 Slave 노드의 터미널에서 mkdir 명령어로 홈 디렉토리에 .ssh 디렉토리를 생성해줍니다. 2. SSH 키 쌍 생성하기 # SSH 키 페어 생성 $ ssh-ke..

Android/Kotlin(Java)

[Kotlin] Annotation Processor로 코드 생성하기(ft. KotlinPoet)

이번 포스트에서는 Annotation Processor에 대해 정리해 보겠습니다. Annotation Processor란? Annotation Prcoessor란 소스 코드에 붙어있는 어노테이션 정보를 읽어서 컴파일 단계에서 컴파일러가 java 파일 혹은 바이트 코드를 생성하여 새로운 소스 코드를 생성할 수 있는 기능을 제공하는 javac(Java Compiler)에 내장된 도구입니다. 여기서 컴파일될 때 어떤 프로세서가 동작할지 결정하는 것은 프로세서를 찾는 'Service Loader'라는 기능의 도움으로 수행됩니다. Annotation Processing 원리 Annotation Processing은 javac에 의해 여러 round에 걸쳐서 동작합니다. 첫 번째 라운드는 컴파일이 사전 컴파일 단계..

Cloud/AWS

[AWS] Cognito Confirmation Status를 FORCE_CHANGE_PASSWORD에서 Confirmed로 바꾸기

문제 발생 Caused by: NotAuthorizedException{message=Failed since user is not authorized., cause=com.amazonaws.services.cognitoidentityprovider.model.NotAuthorizedException: Temporary password has expired and must be reset by an administrator. (Service: AmazonCognitoIdentityProvider; Status Code: 400; Error Code: NotAuthorizedException; Request ID: a28d40a9-5e7c-4661-9453-f2adeb8c4b61), recoverySugge..

DevOps/Docker

[Docker] 도커 컨테이너 - 라이프사이클 및 명령어

이번에는 도커 컨테이너의 라이프사이클과 관련 명령어를 정리하겠습니다. 도커 컨테이너의 라이프사이클 도커 이미지가 컨테이너로 생성될 때의 라이프 사이클은 위의 그림과 같습니다. 도커 컨테이너 생성부터 종료까지 생명주기별로 다루어보겠습니다. 도커 컨테이너 생성 컨테이너 생성 - docker create $ docker create [image] docker create 명령어는 받은 도커 이미지를 컨테이너로 생성합니다. docker create 명령어를 입력하면, 도커엔진이 로컬 호스트에서 이미지 정보를 찾아서 컨테이너를 생성합니다. 정상적으로 수행되면 도커 엔진이 생성한 컨테이너의 해쉬값을 반환합니다. 만약, 로컬 호스트에 이미지가 없을 경우에는 도커엔진이 자동으로 docker pull을 실행하여 Dock..

Android/Coroutines

[Coroutines] suspend 함수 원리 및 CPS(Continuation Passing Style)

이번 포스트에서는 코루틴의 suspend 함수 원리와 CPS(Continuation Passing Style)에 대해 정리하겠습니다. 코루틴의 suspend는 어떻게 동작할까? 코루틴을 이용하면 비동기 작업을 순차적으로 처리하여 동시성 문제를 해결할 수 있습니다. 그러므로, 코루틴을 사용하면 콜백 지옥에서 벗어날 수 있고, 혹은 Reactive streams를 사용하기 위해서 복잡한 함수형 프로그래밍의 체이닝 방식을 사용하지 않을 수 있습니다. 그런데 코루틴이 네트워크 요청과 같은 비동기 작업을 순차적으로 처리할 수 있는 이유는 무엇일까요? 결론부터 말하면, 코루틴의 일시 중지하고 작업을 처리한 후 나중에 해당 지점에서 다시 재개할 수 있는 기능 덕분입니다. 이러한 기능 덕분에 비동기 작업을 처리할 때 ..

DevOps/Docker

[Docker] 도커란? - 도커 개념 정리

도커란? 도커(Docker)는 리눅스 컨테이너에 리눅스 어플리케이션을 프로세스 격리기술을 사용하여 더 쉽게 컨테이너로 실행하고 관리할 수 있게 해주는 오픈소스 프로젝트 입니다. 도커는 일반적으로 도커 엔진(Docker Engine) 혹은 도커에 관련된 모든 프로젝트를 말합니다. 도커 엔진(Docker Engine)은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 프로젝트입니다. 도커의 생태계에 있는 여러 프로젝트들은 도커 엔진을 좀 더 효율적으로 사용하기 위한 것에 불과하기 때문에 도커의 핵심은 도커 엔진이라고 할 수 있습니다. Virtual Machine(가상머신) vs Docker Container(도커 컨테이너) 기존에도 가상화 기술은 존..

반응형
seunghwaan
'분류 전체보기' 카테고리의 글 목록 (2 Page)