웹사이트 검색

Docker 설명: Memcached를 실행하는 Docker 컨테이너를 만드는 방법


상태: 더 이상 사용되지 않음

이 문서는 더 이상 사용되지 않으며 더 이상 유지 관리되지 않습니다.

이유

이 문서의 기술은 구식이며 더 이상 Docker 모범 사례를 반영하지 않을 수 있습니다.

대신 보기

  • Docker 생태계: 공통 구성요소 소개
  • 도커 허브의 공식 memcached 컨테이너

소개

대부분의 웹 애플리케이션의 경우 CPU가 HTTP 요청 삭제의 원인이거나 이를 호스팅하는 웹 서버를 질식시키는 경우는 극히 드뭅니다. 일반적으로 백엔드 데이터 저장소(즉, 선택한 데이터베이스)의 모든 리소스를 잡아먹는 캐싱 계층이 없는 엔지니어링되지 않은 설정입니다.

이제 도입이 필요하지 않은 Memcached는 사용 가능한 리소스를 수정하지 않고도 애플리케이션 배포 스택의 성능을 크게 향상시킬 수 있습니다.

이 DigitalOcean 기사에서는 특히 여러 웹 애플리케이션(예: 여러 WordPress 인스턴스, Python 애플리케이션 등)을 호스팅하는 사람들을 염두에 두고 신속하게 실행(주문형) Memcached 컨테이너 를 시작하기 위해 도커 이미지를 만들 것입니다. 개별적으로 조작할 수 있습니다. 자체 환경 내에서 유지되고 보호되는 이러한 컨테이너는 호스팅되는 애플리케이션과 함께 작동하여 더 빠르고 더 좋아질 수 있습니다.

용어 사전

1. 도커 개요

2. Memcached 개요

3. 우분투에 도커 설치하기

4. 기본 Docker 명령

  1. docker 데몬 및 CLI 사용 실행
  2. 도커 명령

5. Memcached 이미지 생성 시작하기

  1. 요약: Dockerfile이란 무엇입니까?
  2. Dockerfile 명령 개요
  3. Dockerfile 만들기
  4. 최종 Dockerfile
  5. Memcached 컨테이너용 Docker 이미지 만들기

6. 고정된 Memcached 컨테이너 실행

  1. Memcached 설치 컨테이너 만들기
  2. Memcached 컨테이너의 메모리 제한
  3. Memcached 컨테이너 테스트

도커 개요

docker 프로젝트는 일부 Linux 커널 기능 위에 구축된 함께 작동하는 상위 수준 도구를 제공합니다. 목표는 개발자와 시스템 관리자가 모든 종속성과 함께 응용 프로그램을 포팅하고 시스템과 시스템에서 두통 없이 실행되도록 돕는 것입니다.

Docker는 docker 컨테이너라고 하는 애플리케이션을 위한 안전한 LXC(예: Linux 컨테이너) 기반 환경을 생성하여 이를 달성합니다. 이러한 컨테이너는 Dockerfile을 통해 수동 또는 자동으로 명령을 실행하여 빌드할 수 있는 도커 이미지를 사용하여 생성됩니다.

참고: docker 및 해당 부분(예: docker 데몬, CLI, 이미지 등)에 대한 자세한 내용은 프로젝트 소개 문서인 docker Explained: Getting Started를 확인하십시오.

간략한 Memcached

Memcached는 분산형 오픈 소스 데이터 스토리지 엔진입니다. 응용 프로그램에서 매우 빠르게 검색할 수 있도록 특정 유형의 데이터를 RAM에 저장하도록 설계되었습니다(속도가 느린 기존 디스크 대신). 기존 데이터베이스(예: MySQL).

스마트하고 잘 계획되고 최적화된 캐싱 메커니즘을 도입함으로써 더 많은 양의 요청을 처리하고 애플리케이션에서 더 많은 절차를 수행할 수 있습니다. 이것은 다른 모든 캐싱 애플리케이션 또는 구성 요소와 마찬가지로 Memcached의 가장 중요한 사용 사례입니다.

웹 사이트 및 다양한 기타 애플리케이션의 프로덕션에서 크게 의존하고 사용되는 Memcached는 추가 하드웨어(예: 더 많은 서버 또는 서버 리소스)를 사용할 필요 없이 성능을 향상하기 위한 이동 도구 중 하나가 되었습니다.

및 일치하는 (최대 1MB 크기)을 확장 및 대규모로 배포할 수 있는 연관 배열(예: 해시 테이블)에 저장하여 작동합니다. 가상 서버의.

Ubuntu에 Docker 설치(최신)

VPS에서 Docker 프로젝트를 사용하려면 Ubuntu 13.04용 DigitalOcean의 도커 이미지를 사용하거나 직접 설치할 수 있습니다. 이 섹션에서는 Docker 0.7.1의 기본 설치 지침을 빠르게 살펴보겠습니다.

Ubuntu 설치 지침

물방울 업데이트:

sudo aptitude    update
sudo aptitude -y upgrade

aufs 지원이 가능한지 확인하십시오.

sudo aptitude install linux-image-extra-`uname -r`

패키지 확인을 위해 apt-key에 도커 리포지토리 키를 추가합니다.

sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"

aptitude 소스에 도커 저장소를 추가합니다.

sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"

새 추가 항목으로 저장소를 업데이트합니다.

sudo aptitude    update

마지막으로 docker를 다운로드하여 설치합니다.

sudo aptitude install lxc-docker

우분투의 기본 방화벽(UFW: Uncomplicated Firewall)은 도커가 필요로 하는 모든 포워딩 트래픽을 기본적으로 거부합니다.

UFW로 전달 활성화:

나노 텍스트 편집기를 사용하여 UFW 구성을 편집합니다.

sudo nano /etc/default/ufw

아래로 스크롤하여 DEFAULT_FORWARD_POLICY로 시작하는 줄을 찾습니다.

바꾸다:

DEFAULT_FORWARD_POLICY="DROP"

와 함께:

DEFAULT_FORWARD_POLICY="ACCEPT"

CTRL+X를 누르고 Y로 승인하여 저장하고 닫습니다.

마지막으로 UFW를 다시 로드합니다.

sudo ufw reload

기본 Docker 명령

docker로 작업을 시작하기 전에 사용 가능한 명령을 빠르게 살펴보고 첫 번째 시작하기 기사의 기억을 되살려 보겠습니다.

docker 데몬 및 CLI 사용 실행

설치 시 docker 데몬이 백그라운드에서 실행 중이어야 하며 docker CLI에서 보낸 명령을 수락할 준비가 되어 있어야 합니다. docker를 수동으로 실행해야 하는 특정 상황의 경우 다음을 사용하십시오.

도커 데몬 실행:

sudo docker -d &

도커 CLI 사용법:

sudo docker [option] [command] [arguments]

참고: 도커가 작동하려면 sudo 권한이 필요합니다.

명령 목록

다음은 현재 사용 가능한(버전 0.7.1) 도커 명령에 대한 요약입니다.

붙이다

실행 중인 컨테이너에 연결

짓다

Dockerfile에서 컨테이너 빌드

저지르다

컨테이너의 변경 사항으로 새 이미지 만들기

CP

컨테이너 파일 시스템에서 호스트 경로로 파일/폴더 복사

차이

컨테이너 파일 시스템의 변경 사항 검사

이벤트

서버에서 실시간 이벤트 가져오기

내보내다

컨테이너의 콘텐츠를 tar 아카이브로 스트리밍

역사

이미지의 기록 표시

이미지

이미지 나열

수입

tarball의 내용으로 새 파일 시스템 이미지 생성

정보

시스템 전체 정보 표시

끼워 넣다

이미지에 파일 삽입

검사하다

컨테이너에 대한 하위 수준 정보 반환

죽이다

실행 중인 컨테이너 죽이기

tar 아카이브에서 이미지 로드

로그인

Docker 레지스트리 서버에 등록 또는 로그인

로그

컨테이너의 로그 가져오기

포트

PRIVATE_PORT로 NAT된 공용 포트 조회

추신

컨테이너 나열

당기다

Docker 레지스트리 서버에서 이미지 또는 리포지토리 가져오기

푸시

Docker 레지스트리 서버에 이미지 또는 리포지토리 푸시

재시작

실행 중인 컨테이너 다시 시작

rm

하나 이상의 컨테이너 제거

rmi

하나 이상의 이미지 제거

달리다

새 컨테이너에서 명령 실행

구하다

tar 아카이브에 이미지 저장

찾다

도커 인덱스에서 이미지 검색

시작

중지된 컨테이너 시작

멈추다

실행 중인 컨테이너 중지

꼬리표

리포지토리에 이미지 태그 지정

맨 위

컨테이너의 실행 중인 프로세스 조회

버전

도커 버전 정보 표시

Memcached 이미지 생성 시작하기

docker 시리즈의 이전 기사에서 얻은 지식을 바탕으로 docker가 Memcached 설치 이미지(샌드박스 Memcached 인스턴스를 실행하는 데 사용됨)를 자동으로 빌드하도록 Dockerfile 빌드에 대해 바로 살펴보겠습니다.

요약: Dockerfile이란 무엇입니까?

Dockerfile은 새로운 docker 이미지를 자동으로 생성하기 위해 docker가 주어진 순서대로 실행할 연속적으로 선언된 명령을 포함하는 스크립트입니다. 배포에 큰 도움이 됩니다.

이러한 파일은 항상 FROM 명령을 사용하여 기본 이미지를 정의하는 것으로 시작합니다. 여기서부터 빌드 프로세스가 시작되고 이후에 수행되는 각 작업은 호스트에서 커밋(이미지 상태 저장)과 함께 최종 작업을 형성합니다.

용법:

# Build an image using the Dockerfile at current location
# Tag the final image with [name] (e.g. *nginx*)
# Example: sudo docker build -t [name] .
sudo docker build -t memcached_img . 

참고: Dockerfile에 대해 자세히 알아보려면 Docker 설명: Dockerfile을 사용하여 이미지 빌드 자동화 문서를 확인하십시오.

Dockerfile 명령 개요

추가하다

호스트에서 컨테이너로 파일 복사

CMD

실행할 기본 명령을 설정하거나 ENTRYPOINT로 전달

진입 지점

컨테이너 내부에 기본 진입점 애플리케이션 설정

ENV

환경 변수 설정(예: "key = value\)

폭로하다

외부에 포트 노출

에서

사용할 기본 이미지 설정

정비사

Dockerfile의 작성자/소유자 데이터 설정

달리다

명령을 실행하고 종료 결과(컨테이너) 이미지를 커밋합니다.

사용자

이미지에서 컨테이너를 실행하도록 사용자 설정

용량

호스트에서 컨테이너로 디렉토리 마운트

WORKDIR

CMD 지시어가 실행될 디렉토리 설정

Dockerfile 만들기

Dockerfile은 일반 텍스트 문서로 구성되어 있으므로 하나를 만드는 것은 즐겨 사용하는 텍스트 편집기를 시작하고 docker가 이미지를 빌드하기 위해 실행할 명령을 작성하는 것으로 해석됩니다. 파일 작업을 시작한 후 최종 결과를 저장하기 전에 아래의 모든 내용을 차례로 추가하십시오.

참고: 이 섹션의 끝에서 최종 Dockerfile의 모양을 확인할 수 있습니다.

nano 텍스트 편집기를 사용하여 빈 Dockerfile을 만들어 보겠습니다.

nano Dockerfile

모든 명령(명령)과 지시문을 연속적으로 나열해야 합니다. 그러나 모든 것은 기본 이미지(FROM 명령으로 설정)에서 빌드하는 것으로 시작됩니다.

Dockerfile의 목적을 정의하고 사용할 기본 이미지를 선언해 보겠습니다.

############################################################
# Dockerfile to run Memcached Containers
# Based on Ubuntu Image
############################################################

# Set the base image to use to Ubuntu
FROM ubuntu

# Set the file maintainer (your name - the file's author)
MAINTAINER Maintaner Name

이 초기 명령 및 선언 블록 후에 Memcached 설치 지침을 나열하는 것으로 시작할 수 있습니다.

# Update the default application repository sources list
RUN apt-get update

# Install Memcached
RUN apt-get install -y memcached

컨테이너 외부에 노출될 기본 포트를 설정합니다.

# Port to expose (default: 11211)
EXPOSE 11211

기본 실행 명령 및 entrpoint(예: Memcached 데몬)를 설정합니다.

# Default Memcached run command arguments
CMD ["-u", "root", "-m", "128"]

# Set the user to run Memcached daemon
USER daemon

# Set the entrypoint to memcached binary
ENTRYPOINT memcached

최종 Dockerfile

############################################################
# Dockerfile to run Memcached Containers
# Based on Ubuntu Image
############################################################

# Set the base image to use to Ubuntu
FROM ubuntu

# Set the file maintainer (your name - the file's author)
MAINTAINER Maintaner Name
  
# Update the default application repository sources list
RUN apt-get update

# Install Memcached
RUN apt-get install -y memcached

# Port to expose (default: 11211)
EXPOSE 11211

# Default Memcached run command arguments
CMD ["-m", "128"]

# Set the user to run Memcached daemon
USER daemon

# Set the entrypoint to memcached binary
ENTRYPOINT memcached

Dockerfile 내부에 모든 것을 작성한 후 저장하고 CTRL+X와 Y를 차례로 눌러 종료합니다.

이 Dockerfile을 사용하여 Docker화된 Memcached 컨테이너를 시작할 준비가 되었습니다!

Memcached 컨테이너용 도커 이미지 생성

이제 Dockerfile 기초 섹션에 설명된 사용 지침에 따라 첫 번째 Memcached 이미지를 생성할 수 있습니다.

다음 명령을 실행하여 "memcached_img\ 태그가 지정된 이미지를 생성합니다.

sudo docker build -t memcached_img .

참고: docker가 Dockerfile을 찾으려면 후행 .를 잊지 마십시오.

Docker화된 Memcached 컨테이너 실행

이제 이전 섹션에서 얻은 이미지 덕분에 완벽하게 격리되고 자체 포함된 memcached 인스턴스를 얼마든지 생성하는 것이 매우 간단합니다. docker run으로 새 컨테이너를 생성하기만 하면 됩니다.

Memcached 설치 컨테이너 생성

새 컨테이너를 만들려면 다음 명령을 사용하여 이 예제에 따라 요구 사항에 맞게 수정합니다.

# Example: sudo docker run -name [container name] -p [port to access:port exposed] -i -t [memcached image name]
sudo docker run -name memcached_ins -d -p 45001:11211 memcached_img

이제 포트 45001에서 액세스할 수 있는 "memcached_ins\라는 도커 컨테이너가 있고 이전에 빌드한 "memcached_img\ 태그가 지정된 이미지를 사용하여 실행합니다.

Memcached 컨테이너의 메모리 제한

도커 컨테이너 프로세스가 사용할 수 있는 메모리 양을 제한하려면 -m [메모리 양] 플래그를 제한으로 설정하기만 하면 됩니다.

메모리가 256MB로 제한된 컨테이너를 실행하려면:

# Example: sudo docker run -name [name] -m [Memory (int)][memory unit (b, k, m or g)] -d (to run not to attach) -p (to set access and expose ports) [image ID]
sudo docker run -name memcached_ins -m 256m -d -p 45001:11211 memcached_img

메모리 제한을 확인하기 위해 컨테이너를 검사할 수 있습니다.

# Example: docker inspect [container ID] | grep Memory
sudo docker inspect memcached_ins | grep Memory

참고: 위의 명령은 검사 출력에서 메모리 관련 정보를 가져옵니다. 컨테이너와 관련된 모든 관련 정보를 보려면 sudo docker inspect [컨테이너 ID]를 선택하세요.

Memcached 컨테이너 테스트

새로 만든 Memcached 실행 컨테이너를 사용해 볼 수 있는 다양한 방법이 있습니다. 이를 위해 간단한 Python CLI 애플리케이션을 사용합니다. 그러나 캐싱 애드온, 프레임워크 또는 라이브러리를 사용하여 애플리케이션으로 프로덕션에 들어갈 수 있습니다.

호스트에 Python/Memcached에 필요한 라이브러리가 있는지 확인하십시오.

sudo apt-get update && sudo apt-get -y upgrade 
sudo apt-get install -y python-pip
pip install python-memcached

nano를 사용하여 "mc.py\라는 간단한 Python 스크립트를 만들어 보겠습니다.

nano cache.py

내부에 아래(자명한) 내용을 복사하여 붙여넣으십시오.

# Import python-memcache and sys for arguments
import memcache
import sys

# Set address to access the Memcached instance
addr = 'localhost'

# Get number of arguments
# Expected format: python cache.py [memcached port] [key] [value]
len_argv = len(sys.argv)

# At least the port number and a key must be supplied
if len_argv < 3:
    sys.exit("Not enough arguments.")

# Port is supplied and a key is supplied - let's connect!
port  = sys.argv[1]
cache = memcache.Client(["{0}:{1}".format(addr, port)])

# Get the key
key   = str(sys.argv[2])

# If a value is also supplied, set the key-value pair
if len_argv == 4:
    
    value = str(sys.argv[3])    
    cache.set(key, value)

    print "Value for {0} set!".format(key)

# If a value is not supplied, return the value for the key
else:

    value = cache.get(key)

    print "Value for {0} is {1}.".format(key, value) 

CTRL+X를 누르고 Y로 승인하여 저장하고 닫습니다.

호스트에서 위의 스크립트를 사용하여 docker memcached 인스턴스를 테스트합니다.

# Example: python cache.py [port] [key] [value]
python cache.py 45001 my_test_key test_value

# Return: Value for my_test_key set

# See if the key is set:
python cache.py 45001 my_test_key

# Return: Value for my_test_key is test_value.

docker 설치 및 사용에 대한 전체 지침은 docker.io에서 docker 설명서를 확인하세요.

제출자: