Thứ năm, 13/02/2014 | 00:00 GMT+7

Làm thế nào để Dockerise và triển khai nhiều ứng dụng WordPress trên Ubuntu

WordPress đã trở thành một trong những ứng dụng web được triển khai và sử dụng phổ biến nhất mà thế giới từng thấy. Nhờ nhiều năm phát triển không ngừng, giờ đây có thể tạo ra một lượng gần như vô tận các trang web khác nhau (hoặc thậm chí là ứng dụng web) dựa trên WordPress và các plugin / tiện ích mở rộng có sẵn của nó.


Trong bài viết DigitalOcean này, bằng cách sử dụng Docker Linux Container Engine, ta sẽ tìm hiểu cách dockerise (nghĩa là đóng gói và chứa) các ứng dụng WordPress trên server cloud Ubuntu và khám phá đâu có lẽ là cách đơn giản và an toàn nhất để triển khai nhiều trang web WordPress trên cùng một tổ chức.

Bảng chú giải


1. Tóm tắt Docker


2. Tóm tắt về WordPress


3. Cài đặt Docker trên Ubuntu (mới nhất)


4. Làm việc với Docker


  1. Sử dụng giao diện dòng lệnh và daemon
  2. Lệnh client

5. Làm việc với Dockerfiles


  1. Dockerfiles là gì?
  2. Tổng quan về lệnh Dockerfile

6. Tạo containers WordPress


  1. Kéo hình ảnh
  2. Tạo một containers WordPress có thể truy cập
  3. Tạo một containers WordPress có thể truy cập local
  4. Giới hạn việc sử dụng bộ nhớ cho vật chứa

Docker trong Tóm tắt


Công cụ dự án Docker Mời cao cấp, làm việc cùng nhau, được xây dựng trên một số kernel Linux tính năng với mục tiêu giúp các ứng dụng cổng nhà phát triển và quản trị hệ thống - với tất cả các phụ thuộc của họ conjointly - và làm cho họ chạy trên hệ thống và máy Nhức đầu miễn phí .

Docker đạt được điều này bằng cách tạo ra các môi trường an toàn, dựa trên LXC (Vùng chứa Linux) cho các ứng dụng được gọi là “vùng chứa” được tạo bằng hình ảnh. Các cơ sở này cho containers có thể được xây dựng bằng cách thực thi các lệnh theo cách thủ công bằng cách đăng nhập bên trong như một máy ảo hoặc bằng cách tự động hóa quy trình thông qua Dockerfiles .

Lưu ý: Để tìm hiểu thêm về Docker và các phần của nó (tức là daemon docker, CLI, hình ảnh, v.v.), hãy xem bài viết giới thiệu của ta về dự án: Docker Explained : Bắt đầu .

Tóm tắt về WordPress


WordPress ban đầu được tạo ra như một nền tảng tự xuất bản dễ cài đặt và sử dụng (tức là một công cụ viết blog). Nó đã trở nên cực kỳ phổ biến trong những năm qua, dẫn đến sự phát triển của nhiều plugin của bên thứ 3, biến công cụ này thành một CMS (Hệ thống quản lý nội dung) đầy đủ. Dựa trên WordPress, rất nhiều loại trang web và ứng dụng web khác nhau có thể được tạo đơn giản và dễ dàng triển khai.

WordPress là một nền tảng open-souce được phát triển bằng ngôn ngữ lập trình PHP, điều này chắc chắn đã giúp nó thành công. PHP hiện là một trong những ngôn ngữ tạo trang web và ứng dụng web phổ biến nhất và là sự lựa chọn của nhiều công ty (bao gồm cả Facebook).

Các trang web WordPress dựa vào database quan hệ MySQL để giữ dữ liệu của chúng và có nhiều cách để cung cấp năng lượng cho trang web WordPress với nhiều lựa chọn có sẵn để chạy PHP và MySQL cùng nhau.

Trong bài viết này, ta sẽ giới thiệu cho các bạn một phương pháp đã được thử nghiệm để tạo các Docker image được cài đặt trên WordPress, cho phép bạn chạy một trang WordPress khác trên bất kỳ VPS nào, chỉ với một lệnh duy nhất bằng cách sử dụng Docker.

Cài đặt Docker trên Ubuntu (mới nhất)


Cập nhật server của bạn


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

Đảm bảo hỗ trợ aufs có sẵn


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

Thêm khóa repository Docker vào apt-key để xác minh gói


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

Thêm repository Docker vào nguồn


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

Cập nhật Kho lưu trữ


sudo apt-get update 

Download và cài đặt Docker


sudo apt-get install lxc-docker git 

Tường lửa mặc định của Ubuntu (UFW: Uncomplicated Firewall) từ chối tất cả lưu lượng chuyển tiếp theo mặc định, mà docker cần.

Bật chuyển tiếp với UFW


Chỉnh sửa cấu hình UFW bằng editor nano.

sudo nano /etc/default/ufw 

Cuộn xuống và tìm dòng bắt đầu bằng CHÍNH SÁCH TIỀN LỆNH .

Thay thế:

DEFAULT_FORWARD_POLICY="DROP" 

với:

DEFAULT_FORWARD_POLICY="ACCEPT" 

Nhấn CTRL + X và phê duyệt bằng Y để lưu và đóng.

Reload UFW


sudo ufw reload 

Cho phép kết nối từ xa


Nếu bạn đang có kế hoạch về việc sử dụng docker daemon từ xa, sau đó bạn cần phải cho phép các cổng Docker mặc định 4243.

sudo ufw allow 4243/tcp 

Làm việc với Docker


Trước khi bắt đầu làm việc với docker, ta hãy xem nhanh các lệnh có sẵn của nó để làm mới bộ nhớ từ bài viết Bắt đầu đầu tiên của ta .

Sử dụng giao diện dòng lệnh và daemon


Sau khi cài đặt, trình docker sẽ chạy ở chế độ nền, sẵn sàng chấp nhận các lệnh được gửi bởi ứng dụng client docker . Đối với một số tình huống nhất định có thể cần chạy Docker theo cách thủ công, hãy sử dụng cách sau.

Chạy trình docker:

sudo docker -d & 

Sử dụng khách hàng:

sudo docker [option] [command] [arguments] 

Lưu ý: Docker cần các quyền sudo để hoạt động vì nó sử dụng các socket do root sở hữu.

Lệnh client


Bạn có thể nhận được danh sách đầy đủ tất cả các lệnh có sẵn bằng cách chỉ cần gọi client :

docker 

Đây là danh sách tất cả các lệnh có sẵn kể từ version 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 

Làm việc với Dockerfiles


Dockerfiles là gì?


Dockerfiles là các tập lệnh chứa các lệnh được khai báo liên tiếp sẽ được thực thi theo thứ tự do Docker đưa ra để tự động tạo một hình ảnh mới.

Các file này luôn bắt đầu bằng định nghĩa của hình ảnh cơ sở với lệnh FROM . Từ đó, quá trình xây dựng bắt đầu và mỗi hành động sau sẽ tạo thành hình ảnh cuối cùng với các commit (tức là lưu trạng thái hình ảnh).

Dockerfiles được dùng với lệnh 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 .  

Lưu ý: Để tìm hiểu thêm về Dockerfiles, hãy xem bài viết: Docker Explained: Sử dụng Dockerfiles để Tự động hóa việc tạo hình ảnh .

Tổng quan về lệnh Dockerfile


Dockerfiles hoạt động bằng cách nhận các hướng dẫn dưới đây:

  • ADD : Sao chép file từ server lưu trữ vào containers

  • CMD : Đặt các lệnh mặc định để được thực thi hoặc được chuyển đến ENTRYPOINT

  • ENTRYPOINT : Đặt ứng dụng điểm nhập mặc định bên trong containers

  • ENV : Đặt biến môi trường (ví dụ: key = value)

  • EXPOSE : Đưa cổng ra bên ngoài

  • FROM : Đặt hình ảnh cơ sở để sử dụng

  • MAINTAINER : Đặt dữ liệu tác giả / chủ sở hữu của Dockerfile

  • RUN : Chạy lệnh và commit hình ảnh kết quả cuối cùng (vùng chứa)

  • USER : Đặt user chạy containers từ hình ảnh

  • VOLUME : Gắn một folder từ server đến containers

  • WORKDIR : Đặt folder cho các chỉ thị của CMD được thực thi

Tạo containers WordPress


Kéo hình ảnh


Đối với hướng dẫn của ta , ta sẽ sử dụng một hình ảnh WordPress có tên là tutum/wordpress . Hình ảnh wordpress này được tạo bằng Wordpress Image của T đờm : Để tạo containers từ hình ảnh này, trước tiên ta cần kéo ( download ) nó.

Hãy kéo hình ảnh:

docker pull tutum/wordpress 

Lệnh này sẽ download các hình ảnh cơ sở bên dưới với tất cả các lớp đã sửa đổi.

Khi hình ảnh đã sẵn sàng, bằng cách đưa ra một lệnh duy nhất, ta có thể tạo các version WordPress dày dặn.

Tạo một containers WordPress có thể truy cập


Chạy lệnh sau để tạo một containers có thể truy cập từ bên ngoài trên một cổng bạn chỉ định (ví dụ: 80 ):

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

Lệnh trên sẽ tạo một version WordPress chấp nhận các kết nối từ bên ngoài trên cổng HTTP mặc định 80 .

Tạo một containers WordPress có thể truy cập local


Đôi khi nó có thể phù hợp với bạn nhất là chỉ có thể tiếp cận các container local . Điều này có thể hữu ích nếu bạn quyết định cài đặt trình cân bằng tải hoặc Reverse Proxy khác để phân phối kết nối trên nhiều version WordPress.

Chạy lệnh sau để tạo containers có thể truy cập local .

# 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 

Khi bạn thực hiện lệnh trên, Docker sẽ tạo một containers , cung cấp cho bạn ID của nó và sau đó cấp phát động một cổng. Bạn có thể tìm ra cổng nào mà containers đang sử dụng bằng lệnh port .

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

Trong trường hợp này, kết quả nghĩa là containers chỉ có thể truy cập được trên localhost trên cổng 49156 . Bạn có thể sử dụng địa chỉ, được cung cấp đầy đủ, để chuyển hướng các kết nối từ Reverse Proxy .

Nếu bạn muốn chỉ định một cổng, chỉ cần đặt nó ở giữa địa chỉ IP và cổng riêng được sử dụng bởi web server bên trong (ví dụ: 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 

Bằng cách này, bạn sẽ có một version WordPress có thể truy cập local tại cổng 8081 .

Lưu ý: Để chạy containers của bạn trong nền, bạn cũng cần thêm cờ -d sau lệnh run :

docker run -d .. 

Nếu không, bạn sẽ được kết nối với containers nơi bạn sẽ thấy kết quả từ tất cả các ứng dụng đang chạy.

Để thoát khỏi containers , như trong bài giới thiệu, bạn cần sử dụng trình tự thoát CTRL + P ngay sau đó là CTRL + Q.

Sử dụng lệnh docker ps , bạn có thể lấy danh sách các containers đang chạy để tìm ID của một người mới được khởi tạo.

Lưu ý: Bằng cách sử dụng các đối số -name [name] , bạn có thể gắn thẻ containers bằng một cái tên giúp bạn không phải xử lý các ID containers phức tạp:

docker run -d -name new_container_1 .. 

Giới hạn việc sử dụng bộ nhớ cho vật chứa


Để giới hạn dung lượng bộ nhớ mà một tiến trình containers docker có thể sử dụng, chỉ cần đặt cờ -m [memory amount] với giới hạn.

Để chạy containers có bộ nhớ giới hạn 256 MB:

# 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 

Để xác nhận giới hạn bộ nhớ, bạn có thể kiểm tra containers :

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

Lưu ý: Lệnh trên sẽ lấy thông tin liên quan đến bộ nhớ từ kết quả kiểm tra. Để xem tất cả thông tin liên quan đến containers của bạn, hãy chọn sudo docker inspect [container ID] . Ngoài ra, xin lưu ý kernel Linux của bạn phải hỗ trợ khả năng giới hạn swap để giới hạn thực sự hoạt động.

Để biết toàn bộ hướng dẫn cài đặt và sử dụng docker, hãy xem tài liệu về docker tại docker.io .

<div class = “author”> Gửi bởi: <a
href = “https://twitter.com/ostezer”> Hệ điều hành Tezer </a> </div>


Tags:

Các tin liên quan

Cách cài đặt Ruby 2.1.0 và Sinatra trên Ubuntu 13 với RVM
2014-02-10
Cách tạo Sách dạy nấu ăn Đầu bếp Đơn giản để Quản lý Cơ sở hạ tầng trên Ubuntu
2014-02-03
Cách cài đặt MariaDB từ Binary Tarballs trên Ubuntu 13.10
2014-01-28
Cách thiết lập một cụm Serf trên một số VPS Ubuntu
2014-01-23
Cách cấu hình Cụm Galera với MariaDB trên server Ubuntu 12.04
2014-01-20
Cách cài đặt Neo4J trên VPS Ubuntu
2014-01-15
Cách sử dụng PM2 để thiết lập môi trường sản xuất Node.js trên VPS Ubuntu
2014-01-10
Cách sử dụng psad để phát hiện nỗ lực xâm nhập mạng trên VPS Ubuntu
2014-01-10
Cách sử dụng Makefiles để tự động hóa các tác vụ lặp đi lặp lại trên Ubuntu VPS
2014-01-07
Cách thiết lập CouchDB với ElasticSearch trên VPS Ubuntu 13.10
2013-12-30