Giới thiệu về Docker:

  • Docker là nền tảng cung cấp cho các công cụ, service để các developers, adminsystems có thể phát triển, thực thi, chạy các ứng dụng với containers. Hay nói một cách khác nó là một nền tảng để cung cấp cách để building, deploy và run các ứng dụng một cách dễ dàng trên nền tảng ảo hóa - “Build once, run anywhere”. Nói một cách dễ hiểu: Khi chúng ta muốn chạy app thì chúng ta phải thiết lập môi trường chạy cho nó. Thay vì chúng ta sẽ đi cài môi trường chạy cho nó thì chúng ta sẽ chạy docker.

  • Ứng dụng Docker chạy trong vùng chứa (container) có thể được sử dụng trên bất kỳ hệ thống nào: máy tính xách tay của nhà phát triển, hệ thống trên cơ sở hoặc trong hệ thống đám mây. Và là một công cụ tạo môi trường được “đóng gói” (còn gọi là Container) trên máy tính mà không làm tác động tới môi trường hiện tại của máy, môi trường trong Docker sẽ chạy độc lập.

Các thành phần cơ bản của Docker:

  • Docker Engine là một ứng dụng client-server. Có 2 phiên bản phổ biến:

    • Docker Community Edition (CE): Là phiên bản miễn phí và chủ yếu dựa vào các sản phẩm nguồn mở khác.
    • Docker Enterprise(EE): Khi sử dụng phiên bản này bạn sẽ nhận được sự support của nhà phát hành, có thêm các tính năng quản lý và security.
    • Các thành phần chính của docker engine gồm có:
      • Server (docker daemon): Chịu trách nhiệm tạo, quản lý các Docker objects như images, containers, networks, volume.
      • REST API: Docker daemon cung cấp các api cho Client sử dụng để thao tác với Docker.
      • Client là thành phần đầu cuối cung cấp một tập hợp các câu lệnh sử dụng api để người dùng thao tác với Docker.
  • Distribution tools là các công cụ phân tán giúp chúng ta lưu trữ và quản lý các Docker Images như: Docker Registry, Docker Trusted Registry, Docker Hub

    • Docker Hub: Là công cụ phần mềm như một dịch vụ cho phép người dùng public hay private các images của chúng ta. Dịch vụ cung cấp hơn 100.000 ứng dụng có sẵn công khai, cũng như các cơ quan đăng ký container công cộng và tư nhân.
  • Orchestration tools:

    • Docker Machine : Machine tạo Docker Engine trên laptop của bạn hoặc trên bất cứ dịch vụ cloud phổ biến nào như AWS, Azure, Google Cloud, Softlayer hoặc trên hệ thống data center như VMware, OpenStack. Docker Machine sẽ tạo các máy ảo và cài Docker Engine lên chúng và cuối cùng nó sẽ cấu hình Docker Client để giao tiếp với Docker Engine một cách bảo mật.
    • Docker Compose : Là công cụ giúp định nghĩa và khởi chạy multi-container Docker applications.
    • Docker Swarm : Là một công cụ giúp chúng ta tạo ra một clustering Docker. Nó giúp chúng ta gom nhiều Docker Engine lại với nhau và ta có thể “nhìn” nó như duy nhất một virtual Docker Engine.
  • Một số thành phần khác:

    • Dockerfile : Như một script dùng để build các image trong container. Dockerfile bao gồm các câu lệnh liên tiếp nhau được thực hiện tự động trên một image gốc để tạo ra một image mới. Dockerfile giúp đơn giản hóa tiến trình từ lúc bắt đầu đến khi kết thúc.
    • Docker Toolbox : Bởi vì Docker Engine dùng một số feature của kernel Linux nên ta sẽ không thể chạy Docker Engine natively trên Windows hoặc BSD được. Ở các phiên bản trước đây thì ta sẽ cần một máy ảo cài một phiên bản Linux nào đó và sau đó cài Docker Engine lên máy ảo đó.

Cài đặt Docker

I. Chuẩn bị trước khi cài đặt

  1. Update ubuntu
$ sudo apt-get update
  1. Cài đặt các gói để cho phép apt sử dụng repository qua HTTPS
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  1. Thêm key chính thức của Docker
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. Thêm Repositories stable
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

II. Cài đặt Docker CE

  1. Update ubuntu lần nữa
$ sudo apt-get update
  1. Cài đặt Docker CE phiên bản mới nhất
$ sudo apt-get install docker-ce
  1. Test lại xem đã cài đặt thành công hay chưa
docker run hello-world

Để tạo thông báo này, Docker đã thực hiện các bước sau:

  1. Client Docker đã liên hệ với Docker daemon.
  2. Docker daemon sẽ pull image “hello-world” từ Docker Hub.
  3. Docker daemon sex tạo mới container từ image đó để thực thi tiến trình, tạo ra kết quả như chúng ta đang nhìn thấy.
  4. Docker daemon sẽ truyền luồng đầu ra đó đến Docker client, gửi và hiển thị kết quả trên terminal.

Một số lệnh Docker thường dùng

LệnhMô tả
docker imagesLiệt kê các images hiện có
docker pull image_namePull một image từ Docker Hub
docker rmi {image_id/name}Xóa một image
docker run -v <forder_in_computer>:<forder_in_container> -p <port_in_computer> <port_in_container> -it <image_name> /bin/bashTạo mới container bằng cách chạy image (kèm theo các tùy chọn)
docker psLiệt kê các container đang chạy
docker ps -aLiệt kê các container đã tắt
docker rm -f {container_id/name}Xóa một container
docker start {new_container_name}Khởi động một container
docker exec -it {new_container_name} /bin/bashTruy cập vào container đang chạy
uname -aHiển thị thông tin của Kernel ubuntu