분류 전체보기 101

[Network] 1-1. What is the Internet?

인터넷이란 무엇인가? 이 질문에 대해 2가지 방식으로 대답할 수 있다. 1) 볼트와 너트로 얘기할 수 있다. 즉, 기본적인 HW와 SW의 요소들로 인터넷이 구성되어 있다는 것이다. 2) 분산된 애플리케이션에 대해 서비스를 제공하는 네트워크 infrastructure(인프라, 기반시설)로 얘기할 수 있다. 먼저 볼트와 너트로 살펴보자. 그림과 함께 살펴보자. 1. A Nuts-and-Bolts Description 인터넷이란... 전 세계의 수십억 개의 장치들이 서로 연결된 컴퓨터 네트워크다. 종단 시스템(End System) 옛날에는 전통적인 데스크톱 컴퓨터, Linux 워크스테이션, 서버가 있었지만 최근 들어서는 스마트폰, 태블릿 등의 모바일 인터넷을 사용하는 사람이 압도적으로 많아졌다. 게다가, TV..

[Network] Chapter 1. Computer Networks and the Internet

Chapter 1. 컴퓨터 네트워크와 인터넷 첫 번째 챕터는 컴퓨터 네트워크와 인터넷의 전반적인 개요를 살펴볼 것이다. 이번 챕터의 목적은 전체적인 숲을 보기 위해서 그림을 그리고 이 책의 나머지 부분에 대한 뼈대를 세우는 것이다. 기본적인 용어와 개념들을 공부하고 나면 네트워크를 구성하는 기본적인 하드웨어와 소프트웨어의 구성을 설명할 수 있을 것이다. 네트워크의 가장자리부터 시작해서 네트워크에서 실행되는 종단 시스템(end system)과 네트워크 애플리케이션을 살펴본다. 그런 다음에 데이터를 전송하는 링크와 스위치로 설명할 수 있는 컴퓨터 네트워크의 중앙(core)을 살펴본다. 뿐만 아니라 종단 시스템을 네트워크 중앙과 연결하는 액세스 네트워크(access network)와 물리적 장치(physica..

[Docker] 7-4. 도커 컴포즈 실행

도커 컴포즈 커맨드 컴포즈 파일을 작성했으니 도커 컴포즈 커맨드를 실행해야 한다. 도커 컴포즈는 docker-compose 명령을 사용한다. 자주 사용하는 건 up과 down이고 종종 stop도 사용한다. 각 커맨드에 대해 살펴보겠다. docker-compose up 커맨드 : 컨테이너와 주변 환경을 생성 컴포즈 파일의 내용에 따라 컨테이너와 볼륨, 네트워크를 생성하고 실행한다. 컴포즈 파일의 경로는 -f 옵션을 사용해서 지정한다. (-f 옵션이 없다면 현재 작업 디렉토리를 경로로 설정한다) docker-compose -f 정의_파일_경로 up 옵션 ex) docker-compose -f C:/Users/Documents/docker-compose.yml up -d 옵션 항목 : 공식 문서 옵션 내용 -..

Docker 2023.05.31

[Docker] 7-3. 도커 컴포즈 파일 내용

도커 컴포즈 공식문서 도커 컴포즈 정의 파일 내용 살펴보기 도커 컴포즈는 정의 파일을 그대로 실행하기 때문에 컴포즈 파일(docker-compose.yml)이 반드시 필요하다. 작성방법은 간단하다. ex) 아파치 컨테이너의 컴포즈 파일 version: "3" services: apa000ex2: # 컨테이너 이름 image: httpd # 사용할 이미지 ports: - 8080:80 # 매핑할 포트 (호스트포트:컨테이너포트) restart: always # 위에 있는 컴포즈 파일은 아래의 명령어랑 동일한 의미를 갖는다. docker run --name apa000ex2 -d -p 8080:80 httpd # 여기서 detach 모드는 docker-compose up을 실행할 때 옵션으로 -d를 붙여주면 ..

Docker 2023.05.30

[Docker] 7-2. 도커 컴포즈 설치 및 사용법

도커 컴포즈 공식문서 도커 컴포즈 설치 도커 컴포즈는 별도로 설치해야 하는 SW다. 하지만, 도커 컴포즈의 사용법은 도커 엔진과 큰 차이가 없어서 별개의 SW라는 점을 신경쓰지 않아도 된다. 커맨드만 다를 뿐 거의 같은 SW나 마찬가지다. cf) Windows, macOS에서 사용하는 도커 데스크톱은 도커 컴포즈가 함께 설치되어 있어서 따로 설치할 필요는 없다. Linux에서는 도커 컴포즈, python3, python3-pip 패키지를 설치해줘야 한다. 도커 컴포즈는 파이썬으로 작성한 프로그램이기 때문이다. sudo apt install -y python3 python3-pip sudo pip3 install docker-compose 도커 컴포즈 사용법 도커 컴포즈를 사용하려면 Dockerfile 스..

Docker 2023.05.30

[Docker] 7-1. 도커 컴포즈란?

간단하게 도커 컴포즈에 대해서 살펴보겠다. 도커 컴포즈는 도커 명령어를 정의 파일에 기술해 실행하는 도구다. Dockerfile과 비슷한데, 어떤 차이점이 있는지도 살펴보자. 도커 컴포즈 공식문서 도커 컴포즈란? 워드프레스처럼 여러 개의 컨테이너로 구성된 시스템을 실행하고 싶을 때 일일이 명령어를 입력하면서 실행하는 건 꽤나 귀찮은 일이다. 인자, 옵션 뿐만 아니라 볼륨, 네트워크 까지 설정해줘야 하기 때문이다. 뿐만 아니라 컨테이너들을 삭제할 때 마다 일일이 확인해가며 지우는 것도 귀찮다. 이렇듯 시스템 구축과 관련된 명령어를 하나의 텍스트 파일에 기재해서 명령어 한번에 시스템 전체를 실행 ⇒ 종료 ⇒ 폐기까지 한번에 하도록 도와주는 도구가 도커 컴포즈이다. 도커 컴포즈의 구조 도커 컴포즈는 시스템 구..

Docker 2023.05.30

[Docker] 6-6 도커 허브 등록 및 로그인

이번에는 다른 사람에게 이미지를 공유하는 방법에 대해 알아본다. 이미지를 내려받는 곳 지금까지 내려받았던 이미지는 도커 허브에 저장된 것이다. 만약 직접 만든 이미지를 다른 사람들에게 공유하고 싶다면 도커 허브에 이미지를 올리면 된다. 또는 비공개로 사용하는 도커 허브 같은 장소도 만들 수 있다. 도커 허브와 도커 레지스트리 도커 레지스트리란 이미지를 배포하는 장소를 의미한다. 공개/비공개 여부와 상관없이 이미지가 배포되는 곳은 모두 도커 레지스트리이다. 도커 레지스트리는 기업이나 개인도 운영할 수 있으므로 전 세계적으로 많은 도커 레지스트리가 존재한다. 다만, 외부에 공개되어 있지 않다면 도커 레지스트리에 접속할 수 없기 때문에 거기에 있는 이미지를 사용할 수 없다. 도커 허브는 Docker 제작사에서..

Docker 2023.05.29

[Docker] 6-5. 컨테이너 개조

컨테이너 개조란? 도커를 실제로 사용하는 현장에서는 사내에서 개발한 시스템을 운영하는 경우가 많다. 또는 공식 배포되는 SW를 수정해야 할 필요가 종종 있다. 대단한 수정은 아니지만 설정 파일을 매번 작성하기는 귀찮기 때문이다. 컨테이너 개조하는 방법 2가지 방법이 있다. 대부분 이 2가지 방법을 같이 사용한다. 1) 이전에 다뤘던 파일복사와 마운트를 이용한 방법 2) 컨테이너에서 Linux 명령어를 실행하는 방법. SW를 설치하거나 설정을 변경할 수 있다. 컨테이너에서 명령어를 실행할 때 shell이 필요하다 컨테이너에서 리눅스 명령어를 실행하려면 리눅스에서 사용자의 명령을 전달해주는 프로그램인 shell이 있어야 한다. 여러 가지 shell이 있지만 가장 일반적으로 사용되는 bash를 기준으로 살펴볼..

Docker 2023.05.29

[Docker] 6-4. 컨테이너로 이미지 만들기

이번 절에서는 컨테이너로 이미지를 만드는 방법에 대해 살펴본다. 이 방법은 컨테이너를 다른 환경에서 복제하기 위해 사용되며 서버 엔지니어에게는 필수적이다. 컨테이너를 이미지로 만드는 방법 지금까지는 공식적으로 제공되는 이미지만을 사용했다. 하지만, 이미 존재하는 컨테이너를 이용하면 누구나 쉽게 이미지를 만들 수 있다.(이미지를 처음부터 만드는 건 어렵다) 컨테이너를 가지고 나만의 이미지를 만들어서 똑같은 구성의 컨테이너를 대량으로 만들 수 있고 그렇게 만들어낸 컨테이너들을 다른 컴퓨터 또는 서버에 이동시킬 수도 있다. 이동시킨다는 의미는... 실제로 컨테이너를 다른 컴퓨터 또는 서버에 복사한다기보다는 원하는 컨테이너를 이미지로 바꾸고 그 이미지를 가지고 컨테이너를 만드는 걸 '이동한다'라고..

Docker 2023.05.28

[Docker] 6-3. 볼륨 마운트

이번에는 마운트에 대해 정리한다. 볼륨(volume)을 마운트(mount)하면 컨테이너의 일부를 호스트 컴퓨터의 일부와 같이 다룰 수 있어서 편리하다. 차근차근 알아보자. 볼륨과 마운트 볼륨 : 스토리지의 한 영역을 분할한 것. 간단히 말하면 하드디스크나 SSD를 분할한 하나의 영역. 마운트 : 연결하다라는 의미로 대상을 연결해서 OS 또는 SW 관리하에 두는 일을 의미. USB를 컴퓨터에 꽂는 걸 생각하면 된다. 컨테이너를 사용하려면 스토리지 영역을 마운트해야 한다. 왜냐하면 필요한 데이터가 해당 스토리지에 있기 때문이다. 컨테이너는 사용되고 나서 삭제되는 일이 많기 때문에 컨테이너 안에 데이터가 있다면 컨테이너가 삭제되면서 데이터도 함께 사라진다. 그래서 컨테이너의 외부에데이터를 저장해놔야 한다. 다..

Docker 2023.05.28