도커(Docker)는 리눅스의 리소스 격리 기술을 활용해 애플리케이션을 컨테이너 안에 배치시켜주는 플랫폼입니다. 좀 더 이해하기 쉽게 말하자면, VM(가상머신)과 비슷한 개념입니다. 그러나 VM보다 더 가볍고 빠르고 효율적이기 때문에 전 세계적으로 애플리케이션 개발 및 서버 운영에 많이 활용됩니다. 오픈 소스 프로젝트입니다. 도커 도커 컨테이너 도커의 핵심은 컨테이너(Container)입니다. 항만을 떠올려보세요. 네모나고 큰 컨테이너 상자들이 모여있잖아요. 컨테이너들은 같은 공간에 모여있지만 독립적으로 존재하며 각각의 내용물을 담고 있습니다. 서버에서도 컨테이너란 그런 것입니다. 도커는 컨테이너 환경에서 애플리케이션이 패키징되고 실행될 수 있는 기능을 제공합니다. 예를 들어, 컨테이너를 통해 WAS 서..
리눅스는 환경변수(environment variable)를 지정해줘야 애플리케이션이 문제없이 실행 모듈을 로드할 수 있습니다. 환경변수가 설정되어 있어야 파일이 있는 경로를 찾아갈 수 있기 때문입니다. 환경변수 환경변수란 시스템 내에 저장된 키=값 세트입니다. 쉘 또는 서브쉘(쉘 스크립트에 의해 시작된 하위 프로세스)에서 실행되는 애플리케이션이 사용합니다. [구문] KEY=value KEY="공백이 있는 값" KEY=value1:value2:... 변수 이름은 대소문자를 구분합니다. 등호(=) 주위에는 공백을 두지 않습니다. 따옴표(””)는 공백이 있는 값을 지정할 때 사용합니다. 변수에 여러 값을 할 당할 때는 콜론(:)으로 구분합니다. 1. 환경변수 확인 방법 등록된 환경변수를 확인하기 위해서는 pr..
리눅스에서 공유 라이브러리 의존성을 확인할 때 ldd 명령어를 사용합니다. 라이브러리는 정적 라이브러리, 동적 (또는 공유) 라이브러리로 구분할 수 있습니다. 정적 라이브러리는 실행 파일에 포함시켜 배포하며, 동적 라이브러리는 독립적으로 존재하되 실행 파일 런타임 시 연결되는 형태입니다. 즉 프로그램에 자동으로 사용되지만 독립적으로 존재합니다. 리눅스에서는 주로 .o 또는 .so 파일 확장자입니다. ldd가 확인해주는 건 이런 공유 라이브러리가 정상적으로 존재하는지입니다. 가령, 리눅스의 명령어들도 모두 공유 라이브러리가 사용됩니다. cp라는 명령 기능을 하나 사용해도 libselinux.so, librt.so, libacl.so, libattr.so … 등 여러 라이브러리가 필요합니다. 그중 하나라도 ..
리눅스 mv 명령어는 move의 줄임말로 기본적으로는 파일 또는 폴더를 이동시키는 명령어입니다. 그렇지만 파일의 이름을 변경(rename)하거나 파일을 덮어쓰는(overwrite) 기능도 제공합니다. mv [구문] mv [옵션] 이동시킬파일 목적지 mv 명령어는 옮기고자 하는 파일과 목적지에 대해 쓰기 권한(w)이 있어야 수행할 수 있습니다. mv 사용 예시 현재 위치에서 file1을 home 폴더로 옮기는 경우입니다. $ ls file1 $ mv file1 /home $ cd /home $ ls file1 현재 위치에서 file1의 이름을 file2로 변경하는 경우입니다. $ ls file1 $ mv file1 file2 $ ls file2 file1을 file2에 덮어쓰기 하는 경우입니다. mv는 기..
특정 프로세스의 CPU 사용량 추이를 확인하고 싶을 때 윈도우에서 제공하는 성능 모니터를 이용하면 됩니다. 성능 모니터를 통해 원하는 간격으로 특정 프로세스의 CPU 사용 추이를 엑셀 파일로 만드는 방법을 설명드리겠습니다. 성능 모니터 사용 방법 1.CTRL + R로 실행 앱을 열고 perfmon 입력 후 Enter를 누르면 성능 모니터가 실행됩니다. 2. 데이터 수집기 집합 > 사용자 정의 우클릭 > 새로 만들기 > 데이터 수집기 집합을 클릭합니다. 3. 원하는 이름을 입력하고 수동으로 만들기(고급) 라디오 버튼을 선택 후 다음을 클릭합니다. 4. 데이터 로그 만들기에서 성능 카운터를 선택 후 다음을 누릅니다. 5. 추가 버튼을 누르고 성능 카운터를 추가합니다. 6. 측정을 원하는 카운터를 추가합니다...
리눅스에서 터미널을 종료하면 실행되고 있던 프로세스들 역시 종료됩니다. 터미널 세션이 끊어지더라도 프로세스가 계속 실행될 수 있는 방법은 없을까요? 그 방법이 nohup입니다. 이 글에선 nohup의 사용 방법과 더불어 nohup과 함께 자주 사용되고, 비슷해 보이는 개념인 백그라운드 실행 명령어 &도 설명드리겠습니다. nohup nohup은 no hang up의 줄임 말입니다. “끊지 않는다”는 의미가 직접적으로 담겨있습니다. 예를 들어, 리눅스에서 “Hello World”라는 문자열을 출력하는 쉘 스크립트 hello.sh 파일을 실행한다고 하면 아래와 같이 사용합니다. nohup ./hello.sh 기본적으로 nohup으로 실행한 결과는 nohup.out 파일에 저장됩니다. cat nohup.out ..
스마트폰이나 PC에 대해 사람들은 묻습니다. “램이 몇 기가에요?” “용량이 몇 기가에요?” 두 질문은 비슷하면서도 다릅니다. 질문의 답은 16GB, 256GB처럼 모두 메모리의 크기지만 둘은 다릅니다. 그것이 메모리와 스토리지의 차이입니다. 메모리 스토리지 차이 컴퓨터의 메모리(Memory)란 데이터를 저장할 수 있는 공간을 말합니다. 메모리는 단기 메모리와 장기 메모리로 나눌 수 있습니다. 쉽게 말해 단기 메모리는 작업을 하는 동안만 한시적으로 데이터를 기억합니다. 반면 장기 메모리는 데이터를 한 번 저장해두면 사라지지 않아 언제든 다시 액세스 할 수 있습니다. RAM 단기 메모리는 RAM(Random Access Memory)으로 대표되며, 일반적으로 ‘메모리’라고 부를 때는 단기 메모리를 일컫습니..
윈도우에서 드라이버(driver)란 운영체제와 디바이스가 통신할 수 있도록 만드는 소프트웨어 구성요소입니다. 예를 들어, PC에서 캐논 프린터를 사용할 때 사용자는 프린터 모델명에 맞는 드라이버를 설치해야 합니다. 이 경우 애플리케이션 - 운영체제 - 드라이버 구조로 통신을 합니다. 애플리케이션은 운영체제에서 구현한 함수를 호출하고, 운영체제는 드라이버가 구현한 함수를 호출하는 식입니다. 캐논 드라이버는 프린터에서 데이터를 가져오고 그 데이터를 운영체제로 넘깁니다. 위 예시는 하드웨어를 이용하기 위한 드라이버를 설명드린 것이지만, 소프트웨어 드라이버도 존재합니다. 소프트웨어 드라이버는 커널 모드에서 실행될 수 있는 구성 요소를 정의합니다. 소프트웨어 드라이버를 통해 통해 운영체제 핵심 데이터 베이스에 접..
블루스크린은 윈도우 PC를 사용하다 보면 마주치는 치명적인 오류 중 하나입니다. 물론 블루스크린 발생 시 PC를 재시작해야 하기 때문에 문제가 큰 건 맞지만, 그 자체로 컴퓨터에 치명적인 손상을 입는 것은 아니니 너무 걱정하지는 않으셔도 됩니다. 문제의 원인만 제거해주면 다시 정상적으로 PC를 사용할 수 있습니다. BSOD 블루스크린 오류는 BSOD(Blue Screen of Death)라고 불립니다. 현상은 모니터에 파란색 화면과 하얀색 에러 메시지가 나타나며 컴퓨터가 재부팅되는 것입니다. 오류 메시지는 문제의 원인 정보를 담고 있기도 하지만, 그것만 보고 해결 방법을 떠올리기가 쉽진 않죠. BSOD 원인 BSOD는 윈도우가 해결할 수 없는 에러가 발생했을 때 나타납니다. 시스템 작동이 멈추기 때문에 ..
윈도우 레지스트리에 SOFTWARE 노드 밑에 Wow6432Node라는 하위 노드가 존재합니다. 특이한 건 SOFTWARE에서 확인되는 소프트웨어 회사명이 Wow6432Node에도 거의 동일하게 존재한다는 점입니다. [SOFTWARE] HKEY_LOCAL_MACHINE\SOFTWARE\\ [Wow6432Node] HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\\ 그 이유는 64비트 애플리케이션과 32비트 애플리케이션이 각각 다른 노드에서 키 값을 얻기 때문입니다. 혹시 ‘요즘도 32비트 애플리케이션이 있나?’라는 생각을 하실 수도 있지만, 최신 소프트웨어에도 64비트 모듈과 32비트 모듈이 모두 사용됩니다. 32비트 애플리케이션이 HKEY_LOCAL_MACHINE\SOFTWARE..