TOBI

Docker cơ bản, cài đặt Docker

AM

Nội dung

Giới thiệu Docker

Docker là một công cụ giúp cho việc tạo ra và triển khai các container để phát triển, chạy ứng dụng được dễ dàng. Các container là môi trường, mà ở đó lập trình viên đưa vào các thành phần cần thiết để ứng dụng của họ chạy được, bằng cách đóng gói ứng dụng cùng với container như vậy, nó đảm bảo ứng dụng chạy được và giống nhau ở các máy khác nhau (Linux, Windows, Desktop, Server …)

Docker có vẻ rất giống máy ảo (nhiều người từng tạo máy ảo với công cụ ảo hóa như Virtual Box, VMWare), nhưng có điểm khác với VM: thay vì tạo ra toàn bộ hệ thống (dù ảo hóa), Docker lại cho phép ứng dụng sử dụng nhân của hệ điều hành đang chạy Docker để chạy ứng dụng bằng cách bổ sung thêm các thành phần còn thiếu cung cấp bởi container. Cách này làm tăng hiệu xuất và giảm kích thước ứng dụng.

Ai dùng Docker? Docker mang lại lợi ích cho cả lập trình viên lẫn quản trị hệ thống, sử dụng Docker lập trình viên tập trung vào mà viết code chứ không lo lắng về việc triển khai, không lo lắng ở máy của lập trình viên chạy được, máy khác lại không chạy được …

Cài đặt Docker

Hiện giờ Docker có đầy đủ bản cài đặt trên Windows, MacOS, Linux. Tùy thuộc bạn muốn chạy trên môi trường nào thì tải về bản cài đặt tương ứng để cài đặt.

Cài Docker trên Ubuntu

Chạy các lệnh để cài đặt:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker

Giải thích các lệnh trên :

  • sudo apt update: Lệnh này sẽ cập nhật danh sách các gói phần mềm từ các nguồn được cấu hình trên hệ thống của bạn. Nó không cài đặt hoặc cập nhật bất kỳ gói phần mềm nào, chỉ làm mới danh sách các gói mà hệ thống có thể cài đặt.
  • sudo apt install apt-transport-https ca-certificates curl software-properties-common: Đây là một loạt các lệnh được sử dụng để cài đặt các gói phần mềm bổ sung cần thiết để có thể tải và cài đặt gói phần mềm từ các nguồn HTTPS. Cụ thể, các gói này bao gồm apt-transport-https, ca-certificates, curl, và software-properties-common.
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -: Lệnh này sử dụng công cụ curl để tải xuống khóa công cộng (public key) của Docker từ URL được cung cấp, sau đó thêm nó vào hệ thống sử dụng apt-key. Khóa này được sử dụng để xác thực các gói Docker được tải xuống từ nguồn này.
  • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable": Lệnh này thêm một nguồn APT (Advanced Package Tool) mới vào danh sách nguồn trên hệ thống của bạn. Nguồn này là để cài đặt Docker từ kho lưu trữ chính thức của Docker trên Ubuntu.
  • sudo apt update: Tương tự như lệnh đầu tiên, lệnh này cập nhật danh sách các gói phần mềm từ các nguồn đã được cấu hình, bao gồm cả nguồn mới đã thêm từ Docker.
  • apt-cache policy docker-ce: Lệnh này hiển thị thông tin về phiên bản và nguồn của gói phần mềm docker-ce, bao gồm cả các phiên bản khác nhau nếu có.
  • sudo apt install docker-ce: Lệnh này cài đặt Docker Community Edition (CE) từ kho lưu trữ đã được thêm vào trước đó. Sau khi cài đặt, Docker sẽ có thể sử dụng trên hệ thống.
  • sudo systemctl status docker: Lệnh này kiểm tra trạng thái của dịch vụ Docker. Nếu Docker đã được cài đặt và đang chạy, bạn sẽ thấy thông báo về trạng thái hoạt động của nó.

Sau khi cài đặt, bạn có thể cho user hiện tại thuộc group docker, để khi gõ lệnh không cần xin quyền sudo

Tạo user :

adduser tobi

Gán user vào group docker :

sudo usermod -aG docker tobi

Ngoài ra khi sử dụng đến thành phần docker-compose thì bạn cài thêm

sudo apt install docker-compose

Làm quen ban đầu Docker

Giờ hãy mở giao diện lệnh termial (macOS, Linux) hay PowerShell của Windows nên và gõ:

Kiểm tra phiên bản Docker

docker --version

Hoặc lệnh thông tin chi tiết hơn:

docker info

image và container trong Docker

image là một gói phần mềm trong đó chứa những thứ cần như thư viện, các file cấu hình, biến môi trường để chạy mội ứng dụng nào đó. Nó giống như cái USB chứa bộ cài đặt hệ điều hành Windows!

Khi một phiên bản của image chạy, phiên bản chạy đó gọi là container – (vậy muốn có container phải có image). Bất ký lúc nào bạn cũng có thể kiểm tra xem có bao nhiêu container đang chạy và nó sinh ra từ image nào.

Bước đầu, để có image nào đó bạn tải về từ https://hub.docker.com/search?q=&type=image, tại đó có đủ các loại phù hợp với công việc của bạn!

Tải về một image

Kiểm tra các image bạn đang có

docker images -a

Nó sẽ liệt kê ra các image bạn đang có, với dạng:

  • Repository tên image trên kho chứa, ví dụ hệ điều hành CentOS có tên trên hub.docker.com là centos (xem centos)
  • TAG là phiên bản image, với giá trị latest có nghĩa là bản cuối. Muốn tải về bản khác latest vào mục TAGS trên hub.docker.com tìm bản phù hợp.
  • IMAGE ID một chuỗi định danh duy nhất (tên) của image trên hệ thống của bạn.

Để tải về một image nào đó, dùng lệnh:

docker pull nameimage:tag

#Hoặc tải về bản cuối
docker pull nameimage

Bây giờ hệ thống không có hệ điều hành Almalinux, muốn tải nó về – vì trên hub.docker.com nó có tên almalinux, ta sẽ tải về bản mới nhất bằng lệnh:

docker pull almalinux

Giờ thì hệ thống sẽ có thêm image với tên almalinux, có thể góc lại lệnh kiểm tra docker images -a ở trên để xem.

Tạo và chạy container

Như trên, container là một phiên bản chạy của image, trước tiên kiểm tra có các container nào đang chạy:

docker ps

Liệt kê tất cả các container:

docker container ls --all

Các container bạn đã tạo, liệt kê ra hãy chú ý mấy thứ

  • CONTAINER ID một con số (mã hash) gán cho container, bạn dùng mã này để quản lý container này, như xóa bỏ, khởi động, dừng lại …
  • IMAGE cho biết container sinh ra từ image nào.
  • COMMAND cho biết lệnh, ứng dụng chạy khi container chạy (/bin/bash là terminate)
  • STATUS cho biết trạng thái, (exit – đang dừng)

Để tạo và chạy một container theo cú pháp:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Các tham số đó là:

  • [OPTIONS] các thiết lập khi tạo container, có rất nhiều thiết lập tùy mục đích tạo container, sẽ tìm hiểu các thiết lập qua từng trường hợp cụ thể.
  • IMAGE tên image hoặc ID của image từ nó sinh ra container.
  • [COMMAND] [ARG...] lệnh và tham số khi container chạy.

Trở lại phần trên, đang có image hệ điều hành Almalinux, giờ muốn chạy nó (tạo một container từ nó), hãy gõ lệnh sau:

docker run -it almalinux

Bạn chú ý có tham số -it để khi container chạy, bạn có terminate làm việc ngay với Almalinux. Tham số này có nghĩa là

  • -t nó có nghĩa là console, cho phép kết nối với terminal để tương tác
  • -i có nghĩa duy trì mở stdin để nhập lệnh.

Sau lệnh này, bạn đang chạy Almalinux, bạn có thể gõ vài lệnh Almalinux kiểm tra xem. Ví dụ kiểm tra phiên bản Almalinux, xem hình dưới với lệnh cat /ect/redhat-release. Như vậy bạn đã tạo một container

Bạn đang ở terminal của Almalinux, có thể kết thúc bằng lệnh exit.

Hoặc nhấn nhanh CTRL+P+Q để thoát termial nhưng container vẫn đang chạy.

Một vài tham số khác:

Tạo và chạy container, container tự xóa khi kết thúc thì thêm vào tham số --rm

docker run -it --rm ubuntu

Tạo và chạy container – khi container chạy thi hành ngay một lệnh nào đó, ví dụ ls -la

docker run -it --rm debian ls -la

Tạo và chạy container – ánh xạ một thự mục máy host vào một thư mục container, chia sẻ dữ liệu

docker run -it --rm -v path-in-host:path-in-container debian

ví dụ :

docker run -it --rm -v /home/tobi/debian:/home/tobi/debian debian

Vào container đang đang chạy

Kiểm tra xem bằng lệnh docker ps, nếu có một container với ID là containerid đang chạy, để quay quay trở lại terminal của nó dùng lệnh:

docker container attach containerid

Ví dụ :

Chạy một container đang dừng

docker container start -i containerid

Nếu cần xóa bỏ hẳn một container thì dùng lệnh

docker container rm containerid

Tóm tắt các lệnh làm quen

#kiểm tra phiên bản
docker --version

#liệt kê các image
docker images -a

#xóa một image (phải không container nào đang dùng)
docker images rm imageid

#tải về một image (imagename) từ hub.docker.com
docker pull imagename

#liệt kê các container
docker container ls -a

#xóa container
docker container rm containerid

#tạo mới một container
docker run -it imageid 

#thoát termial vẫn giữ container đang chạy
CTRL +P + Q

#Vào termial container đang chạy
docker container attach containerid

#Chạy container đang dừng
docker container start -i containerid

#Chạy một lệnh trên container đang chạy
docker exec -it containerid command

Bài trước. Bài Sau.

Tobi

Tobi

Chào mọi người, mình là Quyền - hiện đang công tác tại Phòng Kỹ thuật AZDIGI. Trong quá trình làm việc mình có cơ hội được tiếp xúc với khá nhiều các vấn đề liên quan đến Website/Hosting/VPS/Server, do đó mình viết lại các hướng dẫn này nhằm chia sẻ kiến thức, cũng như tạo một môi trường để chúng ta giao lưu và học hỏi lẫn nhau, trau dồi thêm nhiều kiến thức bổ ích hơn nữa.