Sunday, September 29, 2024

[Docker] Phần 1 – Docker là gì?

-

1. Mở Đầu.

Docker là một công cụ quan trọng trong thế giới phát triển phần mềm và quản lý hệ thống. Nó cho phép bạn đóng gói ứng dụng và môi trường của chúng vào các container, giúp tạo ra một cách dễ dàng và linh hoạt các môi trường ứng dụng đáng tin cậy. Trong phần này, chúng ta sẽ khám phá Docker từ cơ bản, bao gồm khái niệm về Docker, cách cài đặt trên các hệ điều hành phổ biến, tạo và quản lý container, cũng như cách cập nhật và chia sẻ các image Docker.

2. Giới thiệu về 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 dễ dàng hơn. Các container là môi trường, trong đó 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, Docker đảm bảo ứng dụng chạy đồng nhất ở các máy khác nhau.

Docker có điểm khác biệt so với máy ảo truyền thống (VM). Thay vì tạo ra toàn bộ hệ thống ảo, Docker cho phép ứng dụng sử dụng nhân (kernel) của hệ điều hành đang chạy để chạy ứng dụng. Điều này tạo ra sự hiệu quả và giảm kích thước ứng dụng.

3. Ai sử dụng Docker?

Docker đem lại lợi ích cho cả lập trình viên và quản trị hệ thống. Đối với lập trình viên, Docker giúp tập trung vào việc viết code mà không cần lo lắng về việc triển khai. Đối với quản trị hệ thống, Docker giúp quản lý và triển khai ứng dụng dễ dàng hơn, đồng thời giúp đảm bảo tính đồng nhất của môi trường ứng dụng trên các máy khác nhau.

Bây giờ, hãy cùng khám phá chi tiết về Docker, cách cài đặt nó trên các hệ điều hành khác nhau và các thao tác cơ bản với Docker.

4. Khái niệm cơ bản.

Để bước vào bài học này và các bài học tiếp theo, bạn hãy làm quen một số khái niệm và khái quát về Docker:

– Container là gì?

Container là một môi trường cô đọng và độc lập chứa ứng dụng và tất cả các phụ thuộc của nó. Các container chia sẻ hệ điều hành và tài nguyên vật lý với máy host, nhưng chạy trong một môi trường cách biệt, đảm bảo tính độc lập và di động.

– Image là gì?

Image là một bản ghi chỉ định cách ứng dụng và môi trường của nó nên chạy trong một container. Image chứa tất cả các tệp cần thiết và cài đặt để tạo ra một container cụ thể.

– Docker Engine:

Docker Engine là phần mềm chính của Docker, chạy trên máy tính của bạn. Nó quản lý các container, giao tiếp với hệ điều hành host và cung cấp các dịch vụ cơ bản để quản lý container như tạo, khởi chạy, dừng và xóa.

– Docker Hub:

Docker Hub là một kho lưu trữ công cộng chứa hàng ngàn image sẵn sàng sử dụng. Bạn có thể tìm và tải image từ Docker Hub để sử dụng trong các container của bạn.

5. Cài đặt Docker.

Dưới đây là hướng dẫn cài đặt Docker trên một số hệ điều hành phổ biến:

Cài đặt Docker trên MacOS.

Tải bộ cài đặt từ trang chính thức của Docker, được gọi là “Docker Desktop for Mac.” Cài đặt quá trình này giống với việc cài đặt bất kỳ ứng dụng nào khác trên macOS.

Cài đặt Docker trên Windows 10 (yêu cầu Windows 10 Pro).

Tải bộ cài đặt từ trang chính thức của Docker, có tên là “Docker Desktop for Windows.”

Đảm bảo rằng chế độ Hyper-V virtualization đã được kích hoạt. Nếu chưa, bạn có thể kích hoạt bằng cách sử dụng PowerShell và chạy lệnh sau:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Sau đó, bạn nên khởi động lại máy tính.

Cài đặt Docker trên Ubuntu.

Mở terminal và chạy các lệnh sau để cài đặt Docker hoặc bạn có thể tham khảo bài viết này https://wiki.hoanghd.com/cai-dat-docker-tren-ubuntu/.

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

Để sử dụng Docker mà không cần sử dụng quyền sudo, thêm người dùng hiện tại vào nhóm “docker” bằng lệnh sau:

sudo usermod -aG docker $USER

Sau đó, đăng xuất và đăng nhập lại để thay đổi có hiệu lực.

Cài đặt Docker trên CentOS 7/RHEL 7.

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

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
sudo usermod -aG docker $(whoami)
sudo systemctl enable docker.service
sudo systemctl start docker.service

Cài đặt Docker trên CentOS 8/RHEL 8.

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

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
sudo usermod -aG docker $(whoami)
sudo systemctl enable docker.service
sudo systemctl start docker.service

Nhớ rằng sau khi cài đặt Docker, bạn có thể sử dụng các lệnh Docker cơ bản để quản lý container và image. Trên macOS và Linux, bạn có thể mở terminal để sử dụng Docker CLI, trong khi trên Windows, nên sử dụng PowerShell để chạy các lệnh Docker.

6. Làm quen ban đầu với Docker.

Để bắt đầu làm quen với Docker, hãy mở giao diện dòng lệnh trên macOS và Linux hoặc PowerShell trên Windows và thực hiện các bước sau:

Kiểm tra phiên bản Docker.

Để kiểm tra phiên bản Docker đã được cài đặt, sử dụng lệnh sau:

docker --version

Hoặc bạn có thể sử dụng lệnh để xem thông tin chi tiết hơn về Docker:

docker info

7. Image và Container trong Docker.

Trong Docker, image tương tự như một bản gói chứa tất cả những thành phần cần thiết để chạy một ứng dụng cụ thể. Bạn có thể coi image như một “USB” chứa bản cài đặt của một hệ điều hành hoặc ứng dụng.

Khi bạn khởi chạy một phiên bản của image, nó sẽ trở thành một container. Container là một thể hiện chạy của image đó. Image là một bản mẫu, và bạn có thể tạo nhiều container từ cùng một image.

Tải về một Image.

Để tải về một image từ Docker Hub (kho lưu trữ chứa hàng ngàn image), bạn có thể sử dụng lệnh sau:

docker pull nameimage:tag

Hoặc nếu bạn muốn tải về bản mới nhất của image, bạn có thể sử dụng lệnh sau:

docker pull nameimage

Ví dụ, để tải về image của hệ điều hành Ubuntu:

docker pull ubuntu

Kiểm tra các Image bạn Đã Tải.

Để kiểm tra danh sách các image đã tải về trên hệ thống của bạn, bạn có thể sử dụng lệnh sau:

docker images -a

Lệnh này sẽ liệt kê ra các image bạn đã tải về, bao gồm:

  • Repository: Tên của image trên Docker Hub, ví dụ, hệ điều hành Ubuntu có tên “ubuntu.”
  • TAG: Phiên bản của image, thường có giá trị “latest” để chỉ bản mới nhất.
  • IMAGE ID: Một chuỗi định danh duy nhất cho image trên hệ thống của bạn.

Sau khi tải về image, bạn có thể sử dụng chúng để tạo và chạy các container tương ứng với ứng dụng hoặc hệ điều hành bạn muốn sử dụng.

Tạo và chạy container

Docker cho phép bạn tạo và quản lý các container dựa trên các image có sẵn. Dưới đây là một số lệnh cơ bản để tạo và chạy container:

Kiểm tra các container đang chạy:

Để kiểm tra các container đang chạy trên hệ thống, sử dụng lệnh sau:

docker ps

Nếu bạn muốn liệt kê tất cả các container, bao gồm cả các container đã dừng, bạn có thể sử dụng lệnh:

docker container ls --all

Khi sử dụng lệnh này, bạn sẽ thấy các thông tin sau về mỗi container:

  • CONTAINER ID: Mã hash định danh duy nhất của container, được sử dụng để quản lý container.
  • IMAGE: Tên hoặc ID của image mà container được tạo ra từ.
  • COMMAND: Lệnh hoặc ứng dụng được thực thi khi container chạy (ví dụ: /bin/bash).
  • STATUS: Trạng thái hiện tại của container (ví dụ: “Exited” nếu container đã dừng).

Tạo và chạy một container.

Để tạo và chạy một container, bạn có thể sử dụng lệnh sau:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • [OPTIONS]: Các tùy chọn khi tạo container (có nhiều tùy chọn tùy thuộc vào mục đích tạo container, chúng ta sẽ tìm hiểu từng trường hợp cụ thể).
  • IMAGE: Tên hoặc ID của image mà container sẽ được tạo ra từ.
  • [COMMAND] [ARG...]: Lệnh và các tham số khi container chạy.

Ví dụ, để tạo và chạy một container Ubuntu, bạn có thể sử dụng lệnh sau:

docker run -it ubuntu

Chú ý rằng chúng ta đã sử dụng tùy chọn -it để có thể tương tác với container và thực hiện các lệnh bên trong. Tùy chọn này có ý nghĩa:

  • -t: Tạo một terminal để tương tác.
  • -i: Duy trì stdin mở để nhập lệnh.

Bây giờ, bạn đang ở trong một terminal của Ubuntu container và có thể thực hiện các lệnh Ubuntu bình thường. Ví dụ, để kiểm tra phiên bản Ubuntu, bạn có thể sử dụng lệnh sau:

cat /etc/*release

Để thoát khỏi terminal của container nhưng vẫn để container chạy, bạn có thể nhấn CTRL+P, sau đó CTRL+Q.

Một số tham số khác.

  • Để tạo và chạy một container và tự động xóa nó khi kết thúc, bạn có thể thêm tùy chọn --rm:
docker run -it --rm ubuntu

Để chạy một lệnh cụ thể khi container khởi động, bạn có thể chỉ định nó sau image:

docker run -it --rm debian ls -la

Để ánh xạ một thư mục từ máy host vào container để chia sẻ dữ liệu, bạn có thể sử dụng tùy chọn -v

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

Vào một container đang chạy.

  • Để vào một container đang chạy, bạn có thể sử dụng lệnh sau (cần biết CONTAINER ID của container):
docker container attach containerid

Chạy lại một container đã dừng:

  • Để chạy lại một container đã dừng, bạn có thể sử dụng lệnh sau (cần biết CONTAINER ID của container):
docker container start -i containerid

Xóa một container:

  • Để xóa một container, bạn có thể sử dụng lệnh sau (cần biết CONTAINER ID của container):
docker container rm containerid

Nhớ rằng Docker giúp bạn quản lý các container một cách linh hoạt và tiện lợi, cho phép bạn tạo, chạy, và quản lý chúng dễ dàng để triển khai ứng dụng và môi trường phát triển.

Tóm tắt một số lệnh cơ bản
docker run: Tạo và chạy một container từ một image.
docker ps: Liệt kê các container đang chạy.
docker images: Liệt kê các image đã tải về.
docker build: Xây dựng một image từ một Dockerfile.
docker stop: Dừng một container đang chạy.
docker rm: Xóa một container không sử dụng.
docker rm -f $(docker ps -a -q): Xóa toàn bộ container.
docker rmi: Xóa một image không sử dụng.
docker rmi -f $(docker images -a -q): Xóa toàn bộ image.
docker pull: Tải image từ Docker Hub.

8. Kết luận.

Docker là một công cụ mạnh mẽ cho phát triển, triển khai, và quản lý ứng dụng với tính di động và tính nhất quán giữa các môi trường khác nhau. Nó đã trở thành một phần quan trọng trong quá trình phát triển phần mềm hiện đại và hỗ trợ cả lập trình viên và quản trị hệ thống trong việc tạo và duy trì môi trường ứng dụng dễ dàng và đáng tin cậy.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories