웹사이트 검색

Ubuntu에서 여러 WordPress 애플리케이션을 도커화하고 배포하는 방법


소개

WordPress는 전 세계에서 가장 널리 배포되고 사용되는 웹 애플리케이션 중 하나가 되었습니다. 수년간의 지속적인 개발 덕분에 이제 WordPress 및 사용 가능한 플러그인/확장 기능을 기반으로 거의 무한한 양의 다양한 웹사이트(또는 웹 애플리케이션)를 생성할 수 있습니다.

이 DigitalOcean 기사에서는 Docker Linux Container Engine을 사용하여 Ubuntu 클라우드 서버에서 WordPress 애플리케이션을 도킹(즉, 패키징 및 포함)하는 방법을 배우고 여러 WordPress 사이트를 단일 서버에 배포하는 가장 간단하고 안전한 방법을 알아봅니다. 주인.

용어 사전

1. 도커 개요

2. 워드프레스 개요

3. Ubuntu에 Docker 설치(최신)

4. 도커로 작업하기

  1. 명령줄 인터페이스 사용 및 데몬
  2. 클라이언트 명령

5. Dockerfile 작업

  1. Dockerfile이란 무엇입니까?
  2. Dockerfile 명령 개요

6. WordPress 컨테이너 만들기

  1. 이미지 가져오기
  2. 공개적으로 액세스할 수 있는 WordPress 컨테이너 만들기
  3. 로컬에서 액세스 가능한 WordPress 컨테이너 만들기
  4. 컨테이너의 메모리 사용량 제한

도커 개요

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

Docker는 이미지를 사용하여 생성된 "컨테이너\라는 애플리케이션을 위한 안전한 LXC(Linux 컨테이너) 기반 환경을 생성하여 이를 달성합니다. 이러한 컨테이너 기반은 가상 머신과 같은 내부에 로그인하여 수동으로 명령을 실행하거나 다음을 통해 구축할 수 있습니다. Dockerfile을 통해 프로세스를 자동화합니다.

참고: Docker 및 해당 부분(즉, docker 데몬, CLI, 이미지 등)에 대해 자세히 알아보려면 프로젝트 소개 문서인 Docker Explained: 시작하기를 확인하십시오.

워드프레스 개요

워드프레스는 처음에 자체 출판 플랫폼(예: 블로깅 엔진)을 설치하고 사용하기 쉬운 것으로 만들어졌습니다. 수년에 걸쳐 매우 인기를 얻었으며 많은 타사 플러그인 개발로 이어져 이 도구를 전체 CMS(콘텐츠 관리 시스템)로 전환했습니다. WordPress를 기반으로 다양한 유형의 웹 사이트 및 웹 응용 프로그램을 간단하게 생성하고 쉽게 배포할 수 있습니다.

WordPress는 PHP 프로그래밍 언어를 사용하여 개발된 오픈 소스 플랫폼으로, 확실히 성공에 도움이 되었습니다. PHP는 현재 가장 일반적인 웹 사이트 및 웹 애플리케이션 생성 언어 중 하나이며 많은 회사(Facebook 포함)에서 선택하고 있습니다.

WordPress 사이트는 데이터를 유지하기 위해 MySQL 관계형 데이터베이스에 의존하며 PHP와 MySQL을 함께 실행할 수 있는 여러 가지 선택 사항을 제공하는 여러 가지 방법으로 WordPress 사이트를 강화할 수 있습니다.

이 기사에서는 Docker를 사용하여 단일 명령으로 모든 VPS에서 또 다른 WordPress 사이트를 실행할 수 있는 WordPress 설치 Docker 이미지를 만드는 검증된 방법을 사용합니다.

Ubuntu에 Docker 설치(최신)

물방울 업데이트

sudo apt-get    update
sudo apt-get -y upgrade

aufs 지원이 가능한지 확인

sudo apt-get install linux-image-extra-`uname -r`

패키지 확인을 위해 Docker 리포지토리 키를 apt-key에 추가

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9

소스에 Docker 리포지토리 추가

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

리포지토리 업데이트

sudo apt-get update

도커 다운로드 및 설치

sudo apt-get install lxc-docker git

우분투의 기본 방화벽(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 포트 4243을 허용해야 합니다.

sudo ufw allow 4243/tcp

도커 작업

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

명령줄 인터페이스 사용법 및 데몬

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

도커 데몬 실행:

sudo docker -d &

클라이언트 사용법:

sudo docker [option] [command] [arguments]

참고: Docker는 root가 소유한 소켓을 사용하므로 작동하려면 sudo 권한이 필요합니다.

클라이언트 명령

클라이언트를 호출하여 사용 가능한 모든 명령의 전체 목록을 얻을 수 있습니다.

docker

다음은 버전 0.8.0에서 사용할 수 있는 모든 명령 목록입니다.

Commands:
    attach    Attach to a running container
    build     Build a container from a Dockerfile
    commit    Create a new image from a container's changes
    cp        Copy files/folders from the containers filesystem to the host path
    diff      Inspect changes on a container's filesystem
    events    Get real time events from the server
    export    Stream the contents of a container as a tar archive
    history   Show the history of an image
    images    List images
    import    Create a new filesystem image from the contents of a tarball
    info      Display system-wide information
    insert    Insert a file in an image
    inspect   Return low-level information on a container
    kill      Kill a running container
    load      Load an image from a tar archive
    login     Register or Login to the docker registry server
    logs      Fetch the logs of a container
    port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
    ps        List containers
    pull      Pull an image or a repository from the docker registry server
    push      Push an image or a repository to the docker registry server
    restart   Restart a running container
    rm        Remove one or more containers
    rmi       Remove one or more images
    run       Run a command in a new container
    save      Save an image to a tar archive
    search    Search for an image in the docker index
    start     Start a stopped container
    stop      Stop a running container
    tag       Tag an image into a repository
    top       Lookup the running processes of a container
    version   Show the docker version information
    wait      Block until a container stops, then print its exit code

Dockerfile 작업

Dockerfile이란 무엇입니까?

Dockerfile은 연속적으로 선언된 명령이 포함된 스크립트로, Docker가 자동으로 새 이미지를 생성하기 위해 지정된 순서대로 실행됩니다.

이러한 파일은 항상 FROM 명령이 있는 기본 이미지의 정의로 시작합니다. 여기서부터 빌드 프로세스가 시작되고 이후의 각 작업은 커밋이 포함된 최종 이미지를 형성합니다(예: 이미지 상태 저장).

Dockerfile은 build 명령과 함께 사용할 수 있습니다.

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

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

Dockerfile 명령 개요

Dockerfile은 아래 지침을 수신하여 작동합니다.

  • ADD: 호스트에서 컨테이너로 파일 복사\n
  • CMD: 실행할 기본 명령을 설정하거나 ENTRYPOINT로 전달합니다.\n
  • ENTRYPOINT: 컨테이너 내부의 기본 진입점 애플리케이션 설정\n
  • ENV: 환경 변수 설정(예: 키 = 값)\n
  • EXPOSE: 포트를 외부에 노출
  • FROM: 사용할 기본 이미지 설정\n
  • MAINTAINER: Dockerfile의 작성자/소유자 데이터 설정
  • RUN: 명령을 실행하고 종료 결과(컨테이너) 이미지를 커밋합니다.\n
  • USER: 이미지에서 컨테이너를 실행할 사용자를 설정합니다.\n
  • VOLUME: 호스트에서 컨테이너로 디렉토리 마운트\n
  • WORKDIR: CMD 지시어가 실행될 디렉토리 설정\n

WordPress 컨테이너 생성

이미지 당기기

튜토리얼에서는 tutum/wordpress라는 즉시 사용 가능한 WordPress 이미지를 사용할 것입니다. 이 워드프레스 이미지는 Tutum의 워드프레스 이미지를 사용하여 생성됩니다. 이 이미지에서 컨테이너를 생성하려면 먼저 이미지를 풀(다운로드)해야 합니다.

이미지를 가져오겠습니다:

docker pull tutum/wordpress

이 명령은 수정된 모든 레이어가 있는 기본 기본 이미지를 다운로드합니다.

이미지가 준비되면 단일 명령을 실행하여 도커화된 WordPress 인스턴스를 생성할 수 있습니다.

공개적으로 액세스 가능한 WordPress 컨테이너 만들기

다음 명령을 실행하여 지정한 포트(예: 80)의 외부에서 연결할 수 있는 컨테이너를 만듭니다.

# Usage: docker run -p [Port Number]:80 tutum/wordpress
# Example:
docker run -p 80:80 tutum/wordpress

위의 명령은 기본 HTTP 포트 80에서 외부로부터의 연결을 허용하는 WordPress 인스턴스를 생성합니다.

로컬에서 액세스 가능한 WordPress 컨테이너 만들기

때로는 로컬에서만 컨테이너에 연결할 수 있도록 하는 것이 가장 적합할 수 있습니다. 이는 여러 WordPress 인스턴스에 연결을 분산하기 위해 로드 밸런서 또는 다른 리버스 프록시를 설정하기로 결정한 경우에 유용할 수 있습니다.

다음 명령을 실행하여 로컬로 액세스할 수 있는 컨테이너를 만듭니다.

# Allocate a port dynamically:
# Usage: docker run -p 127.0.0.1::80 tutum/wordpress
# Example:
docker run -p 127.0.0.1::80 tutum/wordpress

위의 명령을 실행하면 Docker는 컨테이너를 생성하고 해당 ID를 제공한 다음 동적으로 포트를 할당합니다. port 명령으로 컨테이너가 사용 중인 포트를 파악할 수 있습니다.

# Usage: docker port [container ID] [private port number]
# Example:
docker port 9af15d73fdf8a997 80

# 127.0.0.1:49156

이 경우 출력은 포트 49156의 localhost에서만 컨테이너에 액세스할 수 있음을 의미합니다. 전체 주소를 사용하여 리버스 프록시에서 연결을 리디렉션할 수 있습니다.

포트를 지정하려면 내부 웹 서버에서 사용하는 IP 주소와 개인 포트 사이에 배치하십시오(예: 80).

# Usage: docker run -p 127.0.0.1:[local port]:80 tutum/wordpress
# Example:
docker run -p 127.0.0.1:8081:80 tutum/wordpress

이렇게 하면 포트 8081에서 로컬로 액세스할 수 있는 WordPress 인스턴스를 갖게 됩니다.

참고: 백그라운드에서 컨테이너를 실행하려면 run 명령 뒤에 -d 플래그도 추가해야 합니다.

docker run -d ..

그렇지 않으면 실행 중인 모든 응용 프로그램의 출력을 볼 수 있는 컨테이너 연결됩니다.

컨테이너를 나가기 위해서는 서론 글에 나온 것처럼 이스케이프 시퀀스 CTRL+P를 사용하고 바로 다음에 CTRL+Q를 사용해야 합니다.

docker ps 명령을 사용하면 실행 중인 컨테이너 목록을 가져와 새로 인스턴스화된 컨테이너의 ID를 찾을 수 있습니다.

참고: -name [name] 인수를 사용하면 복잡한 컨테이너 ID를 처리하지 않아도 되는 이름으로 컨테이너에 태그를 지정할 수 있습니다.

docker run -d -name new_container_1 ..

컨테이너의 메모리 사용량 제한

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

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

# Example: 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]
docker run -m 64m -d -p 8082:80 tutum/wordpress

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

# Example: docker inspect [container ID] | grep Memory
docker inspect 9a7562a361122706 | grep Memory

참고: 위의 명령은 검사 출력에서 메모리 관련 정보를 가져옵니다. 컨테이너와 관련된 모든 관련 정보를 보려면 sudo docker inspect [컨테이너 ID]를 선택하세요. 또한 실제 제한이 작동하려면 Linux 커널이 스왑 제한 기능을 지원해야 합니다.

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

제출자: