Khi nhắc tới Docker nhiều người thường nhầm lẫn giữa 3 khái niệm sau:

  1. Docker, Inc (Tên công ty)
  2. Docker the container runtime
  3. Docker open source project.

Nếu bạn muốn bước vào thế giới container, thì các khái niệm này bạn cần làm rõ.

Docker

Docker là một software chạy trên Linux và Windows. Nó giúp tạo ra container, quản lý và điều phối những container đó.

Docker là một phần của Moby open-source project trên Github. Và Docker, Inc là công ty sở hữu, đồng thời là đơn vị phát triển và kinh doanh sản phẩm này.

Công ty Docker, Inc ban đầu là công ty dotCloud, chuyên cho thuê cloud dưới dạng container. Sau này, để quản lý đống container của mình, công ty đã phát triên một phần mềm nội bộ, và vô tình hay hữu ý đặt tên là Docker. từ đó, Docker ra đời. 😄 (Khi bạn lười tóm tắt lịch sử :))) nhưng vẫn phải tóm tắt).

Docker Engine

Một số khái niệm mập mờ trên bạn đã rõ nhé. còn bây giờ, khi nói về công nghệ, khi người ta nói Docker, thì bạn hiểu đó là Docker runtime, hay Docker Engine.

Docker Engine được hiểu là nền tảng chính, giúp bạn khởi tạo một container và điều phối nó.

Dễ hiểu là: Bạn muốn tạo ra một container linux, chứa các thư viện opencv, c++, v.v.. Thì bạn phải nói với Docker Engine. Và Docker Engine sẽ từ những thông tin bạn cung cấp tạo ra một container cho bạn.

Cài đặt Docker

Trong phần này chúng ta sẽ đi vào 2 phần chính:

  1. Desktop install

    • Docker for Windows
    • Docker for Mac
    • Docker for Linux

Docker for Windows

Docker cho Windows là một package, nên rất dễ cài đặt, tuy nhiên nó sẽ còn thiếu một số feature. Vì Docker, Inc nói rằng sẽ ưu tiên tính ổn định trước, sau đó mới update đủ tính năng.

Yêu cầu:

  • Windows 10 Pro | Enterprise | Education (Đầy đủ thì bắt buộc phải là Pro)
  • Phải là Windows 10 64-bit
  • Tính năng Hyper-VContainers phải được kích hoạt
  • Hardware virtualization support phải được kích hoạt trên BIOS (Cái này thông thường máy bạn đã kích hoạt sẵn rồi)

a. Kích hoạt Hyper-V and Containers

Đầu tiên là kích hoạt Hyper-V và Containers features trên máy bạn. Lưu ý, khi kích hoạt xong, thì các máy ảo VM đang chạy trên máy bạn sẽ không sử dụng được nữa. (Bluestacks, VMware, v,v..)

  1. Click chuột phải vào biểu tượng Windows chọn Apps and Features.
  2. Chọn Programs and Features
  3. Chọn Turn Windows features on or off
  4. Tick vào enable các dòng Hyper-VContainers
  5. Restart lại máy.

Chi tiết xem tại đây

container

b. Download Docker và cài đặt

Bản Docker cài đặt trên Windows sẽ bao gồm Docker Engine, Docker CLI client, Docker Compose, Docker Machine, và Kitematic.

  1. Tải Docker Desktop Installer.exe
  2. Chạy phần mềm cài đặt và làm theo hướng dẫn.

docker

Khi đã cài đặt xong, chạy Docker

docker

Khi khởi chạy xong, nhìn xuống thanh status bar bạn sẽ thấy một con cá voi.

docker

Lần đầu khởi chạy nó sẽ bắt bạn đăng nhập

docker

Sau khi hoàn tất, hãy mở PowerShell terminal lên và kiểm tra version của Docker bằng câu lệnh docker version

Vậy là bạn đã cài đặt Docker cho Windows thành công.

Docker for Mac

Với Mac thì tương dối dễ dàng thôi, vì Mac OS Darwin kernel base trên Linux mà.

  1. Download docker.dmg tại đây
  2. Double-click và kéo hình con cá voi vào Application.

docker

  1. Vào Application và mở Docker lên thôi.

docker

Lần đầu bạn cũng sẽ cần đăng nhập.

Click vào con cá voi trên thanh trạng thái để thêm thông tin.

docker

Kiểm tra version

$ docker --version
Docker version 18.09, build c97c6d6

$ docker-compose --version
docker-compose version 1.24.0, build 8dd22a9

$ docker-machine --version
docker-machine version 0.16.0, build 9ba6da9

Docker for Linux

Docker cho Linux có hai phiên bản: CommunityEnterprise, trong bài viết này sẽ hướng dẫn các bạn cài bản Community nhé, vì nó free 😅

Có 2 cách cài:

  1. Sử dụng repository.
  2. Cài trực tiếp từ file .deb. (cách này giành cho server hạn chế kết nối internet).

Chúng ta sẽ dùng cách 1 cho đơn giản. Còn cách 2 các bạn có thể tham khảo tại đây

  1. Thêm khoá GPG của Docker vào apt-key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. Thêm reposioty của Docker vào apt
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  1. Cài đặt docker-ce
$ sudo apt-get update
$ sudo apt-get install docker-ce
  1. Chạy thử
$ docker --version

Một số khái niệm cơ bản

1. storage driver

Tới đây là bạn đã cài xong docker rồi, bây giờ chúng ta sẽ làm quen vài khái niệm của Docker.

Mọi container sẽ có một thư mục để lưu trữ của riêng nó. gọi là local storage. Tại đây sẽ lưu image và filesystem của nó. Đây là sẽ nơi mọi hoạt động read/write xảy ra, nên ảnh hưởng trực tiếp tới hiệu năng của container.

vùng local storage này được quản lý bởi storage driver. Docker trên Linux hỗ trợ nhiều phiên bản driver khác nhau và mỗi loại driver lại có một cách implement khác nhau, dẫn tới hiệu năng khác nhau.

Một số driver trên Docker Linux:

  • aufs (Phiên bản đầu và đã lỗi thời)
  • overlay2 (Lựa chọn tốt nhất hiện tại)
  • devicemapper
  • btrfs
  • zfs

Docker trên Windows thì chỉ có windowsfilter nên k có lựa chọn nào khác :D

Để chỉnh sửa loại driver này, bạn có thể edit tại /etc/docker/daemon.json và restart lại Docker

{
  "storage-driver": "overlay2"
}

Sau khi restart, mọi container hiện tại đều không khả dụng nữa và phải tạo lại.

Chọn phiên bản storage driver là cực kỳ quan trọng, vì nó ảnh hưởng trực tiếp tới hiệu năng của container của bạn. Tại thời điểm viết bài viết này, thì lựa chọn overlay2 là tốt nhất cho Ubuntu Linux.

2. Images

Sau khi đọc cả bài, cuối cùng bạn cũng chưa hiểu Docker làm cái gì. Thì đây, tới đây bạn sẽ có cái nhìn rõ hơn về Docker.

Docker bản thân nó chỉ là software thôi, và nhiệm vụ của nó là tạo ra container cho chúng ta.

Cái container chúng ta cần tạo bạn hiểu là nó sẽ tương tự như một cái máy ảo (VM), chỉ khác là nó chạy trực tiếp trên Linux Kernel luôn, không cần cài đặt OS từ đầu nữa. (Xem lại bài 1).

Vậy làm cách nào chúng ta nói với Docker rằng tôi cần tạo ra 1 container Ubuntu 16.04 có cài đặt sẵn node.js?

Bạn sẽ phải mô tả thông tin này cho Docker bằng Docker Image.

Docker Image bạn có thể hiểu là object, trong đó có chưa các mô tả về hệ điều hành bạn cần dùng, các thư viện cần cài. Nếu là một OOP developer, thì có thể hiểu Docker Image chính là Class.

Để xem các images bạn đang có, sử dụng command line sau:

$ docker image ls

Tất nhiên là mới cài thì bạn chưa có cái image nào rồi, bạn có thể down một cái image có mô tả container Ubuntu trên trang Docker Host.

docker pull ubuntu

3. Container

Khi đã có Docker Image trong tay, việc của bạn là ra lệnh cho Docker tạo ra một container từ image đó. Bằng câu lệnh:

docker run [ten image]

Docker có một container ví dụ như sau:

docker run hello-world

Câu lệnh trên sẽ chạy image hello-world. Là một image do Docker cung cấp sẵn, chạy trên Linux.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

Okay, tạm giới thiệu tới đây thui, để chúng ta hiểu một số khái niệm cơ bản của Docker. Còn chi tiết từng phần sẽ ở phần sau nhé các bạn. hú hú.