Cài đặt và sử dụng Docker

Như trong bài viết trước tôi có giới thiệu qua về Docker. Nếu bạn chưa biết khái niệm về Docker thì hãy đọc qua bài viết đó trước. Trong phần này chúng ta sẽ cùng tìm hiểu về cách cài đặt và sử dụng Docker thông qua ví dụ đơn giản.

Bạn có thể xem hướng dẫn chi tiết về cách cài đặt Docker tại đây.

Nếu bạn đang chạy Docker trên Linux, bạn cần chạy toàn bộ câu lệnh với quyền root hoặc thêm user của bạn vào docker group và đăng nhập lại

Thuật ngữ

  • Container – Một instance đang chạy, đóng gói các phần mềm được yêu cầu. Container luôn được tạo từ một Image. Các Container có thể tìm thấy các Port và Volume để có thể tương tác với Container khác và / hoặc với thế giới bên ngoài. Container có thể dễ dàng bị tắt hoặc xoá đi và được tạo lại trong khoảng thời gian rất ngắn. Container không nắm giữ state.
  • Image – thành phần cơ bản cho tất cả Container. Khi bạn tạo một Image, tất cả các bước sẽ được cache lại và có thể được sử dụng lại. Tuỳ thuộc vào Image, nó có thể mất thời gian để build. Mặt khác, Container có thể được start từ Image ngay lập tức.
  • Port – Nguồn gốc của nó là một UDP/TCP port. Hiểu một cách đơn giản, chúng ta có thể hình dùng rằng Port được dùng để kết nối với bên ngoài (có thể truy cập từ hệ điều hành máy chủ) hoặc kết nối với các Container khác – ví dụ như là nó chỉ có thể được truy cập từ các Container khác và ẩn với bên ngoài.
  • Volume – Có thể hiểu nó như một thư mục được chia sẻ. Volume được thiết lập khi một Container được tạo. Volume được tạo để lưu trữ dữ liệu, độc lập với vòng đời của Container. Registry – Server mà lưu trữ các Image của Docker. Nó có thể được so sánh với Github – Bạn có thể lấy một Image từ Registry để triển khai dưới local hoặc đẩy một Image đã được build vào Registry
  • Docker Hub –  Registry với giao diện Web được cung cấp bởi Docker Inc. Nó chứa nhiều Docker Image với phần mềm khác nhau. Docker Hub là nguồn Docker Image chính thức được tạo bởi Team Docker hoặc hợp tác với các nhà sản xuất phần mềm chính thống. Những thông tin này luôn có sẵn với các user đăng nhập. Có cả 2 dạng account miễn phí và trả tiền. Bạn có thể có một private Image trên một account và không giới hạn public Image cho account miến phí. Ở đây cũng có một Docker Store – một dịch vụ rất giống với Docker Hub. Nó là một Markerplace với các rating, review…

Hello world

Nào hãy cùng chạy Container đầu tiên của bạn

Kết quả

  • docker run là câu lện để chạy một Container
  • ubuntu là Image mà bạn muốn chạy. Ví dụ Image hệ điều hành Ubuntu. Khi bạn chỉ định một Image, Docker đầu tiên sẽ tìm kiếm Image trên Host Docker của bạn, nếu Image không tồn tại ở local, thì Image sẽ được kéo về từ một public Image Registry – Docker Hub.
  • /bin/echo ‘Hello world’  là câu lệnh được chạy trong một Container mới. Container này đơn giản là in ra dòng chữ Hello world, và sau đấy dừng thực thi.

Nào hãy tạo một tương tác với shell bên trong một Docker Container:

  • -t gán một pseudo-tty hoặc terminal bên trong Container mới
  • -i cho phép bạn tạo một kết nối tương tác bằng cách lấy chuẩn đầu vào (STDIN) của Container.
  • –rm tự động xoá Container khi thoát tiến trình. Mặc định các Container sẽ không bị xoá. Container này sẽ tồn tại cho tới khi chúng ta giữ Session của Shell và chấm dứt khi chúng ta thoát khỏi Session (Giống như SSH session với Remote Server).

Nếu bạn muốn Container tiếp tục chạy sau khi kết thúc Session, bạn cần Daemon nó:

  • –name daemon gán tên daemon vào một Container mới. Nếu bạn không chỉ rõ tên, Docker sẽ tạo ra và gán nó một cách tự động
  • -d chạy Container trong background

Nào hãy cùng xem chúng ta có những Container nào ở thời điểm này:

Kết quả

  • docker ps là câu lệnh hiển thị danh sách các Container đang có
  • -a hiển thị tất cả các Container ( nếu không có -a thì nó sẽ chỉ hiển thị các Container đang chạy)

ps hiển thị cho chúng ta 2 Container:

gifted_nobel tên của Container được sinh ra tự động. Nó là Container đầu tiên chúng ta tạo ra và in ra dòng chữ Hello world. daemon là Container thứ 3 chúng ta tạo và được chạy như daemon.

Chú ý rằng không có Container thứ 2 ở đây bởi vì chúng ta thiết lập lựa chọn –rm. Như kết quả mong muốn, Container này sẽ được xoá tự động hoàn toàn sau khi thực thi xong.

Chúng ta hãy cùng kiểm tra log và xem daemon Container đang hoạt động ra sao:

Kết quả

  • Log Docker lấy về các log của Container
  • -f để theo dõi log đưa ra (hoạt động chắc chắn giống như tail -f)

Tiếp theo chúng ta sẽ stop daemon Container:

Để chắc chắn rằng Container đã được Stop chúng ta có thể kiểm tra:

Kết quả

Container đã được Stop, nếu bạn muốn Start lại thì dùng câu lệnh như sau:

Chúng ta cần đảm bảo nó đang chạy:

Kết quả

Nào giờ thì Stop và xoá tất cả các Container bằng cách thủ công

Để xoá tất cả Container cùng một lúc chúng ta có thể sử dụng câu lệnh sau:

  • docker rm là câu lệnh dùng để xoá Container
  • -f (cho rm) stop Container nếu nó đang chạy
  • -q (cho ps) là chỉ in ra các ID của Container

You May Also Like

About the Author: Nguyen Dinh Thuc

Leave a Reply

avatar
  Subscribe  
Notify of