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ồmapt-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ụngapt-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ềmdocker-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áclatest
vào mục TAGS trênhub.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ếtcontainer
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ớiterminal
để 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