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

분류 전체보기

Android/BLE

[BLE] GAP란? - Advertising & Connections

GAP(Generic Access Profile)란?GAP(Generic Access Profile)는 서로 다른 제조사에서 제작한 두 개 이상의 BLE 디바이스가 서로 호환되어 상호 운용할 수 있도록하는 프레임워크를 제공합니다. 즉, GAP는 서로를 검색할 수 있도록 이 프레임워크는 모든 BLE 디바이스가 구현을 해야합니다. 그러므로, GAP에서는 광고(Advertisement)와 연결 설정(Connection Establishment)등의 상호 운용성을 보장하며 BLE Device의 모드(Modes)와 역할(Roles), 프로시저(Procedures), 보안(Security)을 정의합니다. 두 개의 BLE 디바이스는 서로를 발견하기 위해서는 둘 중 하나는 광고(Advertising)을 해야하며 이 장..

Android/BLE

[BLE] 저전력 블루투스 BLE(Bluetooth Low Energy)란?

BLE(Bluetooth Low Energy)란? Bluetooth는 마우스, 키보드 또는 PC와 같은 장치에서 근거리 케이블을 대체하기 위한 무선(wireless) 통신 기술로 시작되었습니다. 초기에는 당시 표준이었던 Bluetooth Classic(BR/EDR)이라는 기술을 사용했습니다. 하지만, Bluetooth Classic에는 큰 문제점이 있었는데 배터리가 빨리 소모된다는 단점이 있었고 많은 불편함이 있었습니다. 그리고 마침내 2010년에 Bluetooth 4.0이 새로운 Bluetooth의 표준으로 채택 되었고 Bluetooth Classic의 단점을 보완하여 훨씬 적은 전력을 사용하고 Bluetooth Classic과 비슷한 성능의 무선 통신이 가능해졌습니다. 당시 배터리 소모 문제는 Blu..

DevOps/Docker

[Docker] 도커 컴포즈(Docker compose) - 개념 정리 및 사용법

이번 포스트에서는 도커 컴포즈에 대해 정리하겠습니다. 도커 컴포즈란? 도커 컴포즈는 단일 서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너의 묶음으로 관리할 수 있는 작업 환경을 제공하는 관리 도구입니다. 도커 컴포즈를 사용하는 이유 여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 이를 테스트하려면 각 컨테이너를 하나씩 생성해야 합니다. 예를 들면, 웹 어플리케이션을 테스트하려면 웹 서버 컨테이너, 데이터베이스 컨테이너 두 개의 컨테이너를 각각 생성해야 합니다. 즉, 아래와 같이 두개의 run 명령어를 입력해야합니다. $ docker run --name wordpress_db -d mysql:8 $ docker run -d -p 8080:80 \ --l..

DevOps/Docker

[Docker] 도커 이미지 - 도커 허브(Docker hub)에 이미지 배포하기

이번 포스트에서는 도커 공식 원격 저장소인 도커 허브(Docker hub)에 도커 이미지를 배포하는 방법을 정리하겠습니다. 도커 이미지 배포 방법 이미지를 생성했다면 이를 다른 도커 엔진에 배포할 방법이 필요합니다. docker save나 docker export 같은 방법으로 단일 파일로 추출해서 배포할 수도 있지만 이미지 파일의 크기가 너무 크거나 도커 엔진의 수가 너무 많다면 이미지를 파일로 배포하기 어렵습니다. 또한 도커의 이미지 구조인 레이어 형태를 이용하지 않으므로 매우 비효율적입니다. 이를 해결하기 위한 첫 번째 방법은 도커에서 공식적으로 제공하는 도커 허브(Docker hub) 이미지 저장소를 이용하는 것입니다. 도커 허브는 도커 이미지를 저장할 수 있는 클라우드 서비스이고 사용자는 이미지..

DevOps/Docker

[Docker] 도커 이미지 - Dockerfile 개념 및 작성법

이번 포스트에서는 Dockerfile의 개념과 작성법에 대해 정리하겠습니다. Dockerfile 사용 유무에 따른 이미지를 생성하는 방법 개발한 어플리케이션을 컨테이너화할 때 생성하는 방법은 아래와 같습니다. 1. 아무것도 존재하지 않는 이미지(ex. 우분투, centOS)로 컨테이너를 생성. 2. 어플리케이션을 위한 환경을 설치하고 소스코드 등을 복사해 잘 동작하는 것을 확인. 3. 컨테이너를 이미지로 커밋(commit) 이 방법을 사용하면 어플리케이션이 동작하는 환경을 구성하기 위해 일일이 수작업으로 패키지를 설치하고 소스코드를 깃(Git)에서 클론하거나 호스트에서 복사해야 합니다. 물론 직접 컨테이너에서 어플리케이션을 구동해보고 이미지로 커밋하기 때문에 이미지의 동작을 보장할 수 있다는 점도 있습니..

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..

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