Docker là gì? Đây là một công cụ quan trọng trong thế giới phát triển phần mềm hiện đại, giúp triển khai và quản lý ứng dụng một cách nhất quán và hiệu quả. Trong thời đại công nghệ thông tin phát triển nhanh chóng, đây là giải pháp tối ưu cho việc tạo, triển khai và chạy các ứng dụng trên nhiều môi trường khác nhau. VinaHost sẽ cùng bạn tìm hiểu về công cụ này qua bài viết sau.
1. Docker là gì?
Docker là một nền tảng mã nguồn mở giúp đóng gói ứng dụng và các thành phần phụ thuộc của nó thành các đơn vị có thể chạy được, gọi là container. Container là các môi trường chạy độc lập, có thể được triển khai trên nhiều hệ thống khác nhau.
Công cụ này cung cấp một cách đơn giản và hiệu quả để xây dựng, chia sẻ và triển khai ứng dụng. Nó giúp giảm thiểu sự phức tạp trong quá trình triển khai ứng dụng, tối ưu hóa tài nguyên và tăng tính di động của ứng dụng.
2. Docker Container là gì?
Container là một công cụ giúp các lập trình viên đóng gói ứng dụng cùng với tất cả các phụ thuộc của nó thành một đơn vị nhỏ gọn. Đơn vị này có thể được triển khai trên nhiều máy tính khác nhau, bất kể cài đặt của máy tính đó khác nhau như thế nào.
Docker và máy ảo (VM) đều là các công nghệ ảo hóa, nhưng Docker có một số ưu điểm vượt trội hơn, khiến nó trở nên phổ biến hơn.
Ưu điểm của công cụ này bao gồm:
- Dễ sử dụng: Có thể được sử dụng bởi bất kỳ ai, từ lập trình viên đến quản trị viên hệ thống. Nó cung cấp một giao diện đơn giản và trực quan để tạo, quản lý và triển khai các container.
- Nhanh chóng: Container tương đối nhỏ gọn và có thể được khởi chạy trong vài giây. Điều này làm cho chúng trở nên lý tưởng cho việc phát triển và thử nghiệm ứng dụng.
- Tính di động: Container có thể được triển khai trên bất kỳ nền tảng nào hỗ trợ Docker. Điều này giúp đơn giản hóa việc triển khai ứng dụng trên đám mây hoặc trên nhiều môi trường khác nhau.
- Khả năng mở rộng: Container có thể được kết nối với nhau để tạo thành các ứng dụng phức tạp. Điều này làm cho chúng trở nên lý tưởng cho việc triển khai các ứng dụng microservices.
Xem thêm: NGINX là gì? | Cách Cài đặt, Cấu hình & Sử dụng NGINX
3. Lịch sử hình thành và phát triển của Docker
Công cụ này được tạo ra bởi Solomon Hykes và Sebastien Pahl vào năm 2010. Hykes bắt đầu dự án như một phần của dự án nội bộ giúp triển khai ứng dụng dễ dàng hơn trên nền tảng Cloud trong dotCloud – một công ty PaaS đã đóng cửa vào năm 2016.
Sau đó, công nghệ containers được phát triển dẫn đến sự thành công của Docker vào năm 2013. Công cụ này nhanh chóng thu hút sự chú ý từ cộng đồng do tính tiện ích và khả năng di động hoá ứng dụng. Cuối cùng, vào năm 2017, công cụ này trở thành lựa chọn toàn cầu cho các container.
Nền tảng được phát triển dựa trên các công nghệ ảo hóa đã có sẵn, chẳng hạn như LXC và chroot. Tuy nhiên, công cụ này đã đơn giản hóa việc sử dụng các công nghệ này và cung cấp một số tính năng bổ sung, chẳng hạn như:
- Hỗ trợ nhiều nền tảng: Có thể được sử dụng trên Linux, Windows và macOS.
- Hỗ trợ nhiều loại ứng dụng: Được sử dụng để chạy các ứng dụng web, ứng dụng máy chủ, ứng dụng di động và các ứng dụng khác.
- Hỗ trợ các microservices: Tạo và triển khai các ứng dụng microservices.
Docker đã nhanh chóng trở nên phổ biến và được sử dụng bởi các nhà phát triển, quản trị viên hệ thống và doanh nghiệp trên toàn thế giới. Theo một báo cáo của Red Hat, công cụ này được sử dụng bởi hơn 80% các doanh nghiệp lớn.
4. Cách thức hoạt động
Công cụ này hoạt động bằng cách cung cấp một phương thức tiêu chuẩn để chạy mã. Nó giống như cách máy ảo ảo hóa phần cứng của máy chủ để loại bỏ nhu cầu quản lý trực tiếp, lúc này các container sẽ ảo hóa môi trường chạy của ứng dụng. Khi được cài đặt trên từng máy chủ, nền tảng này cung cấp các lệnh cơ bản để tạo, khởi chạy và dừng các container.
Cơ chế hoạt động của công cụ này bao gồm hai thành phần chính là Docker Engine và Docker Client. Engine là một chương trình chạy trên máy chủ và chịu trách nhiệm tạo, khởi chạy và quản lý các container. Client là một ứng dụng chạy trên máy tính của người dùng và cho phép người dùng tương tác với Engine.
Engine và Client giao tiếp với nhau thông qua REST API. REST API là một bộ giao thức tiêu chuẩn cho phép các ứng dụng giao tiếp với nhau.
Ngoài ra, công cụ này cũng cung cấp một số dịch vụ giúp bạn dễ dàng chạy các container ở quy mô lớn. Các dịch vụ này bao gồm:
- Amazon ECS: Amazon ECS là một dịch vụ quản lý, cho phép bạn tạo và quản lý các cụm container trên AWS.
- AWS Fargate: Là một dịch vụ cho phép bạn chạy các container mà không cần phải quản lý cơ sở hạ tầng nền tảng.
- Amazon EKS: Dịch vụ quản lý Kubernetes cho phép bạn chạy các ứng dụng Kubernetes trên AWS.
- AWS Batch: AWS Batch là một dịch vụ quản lý hàng loạt, cho phép bạn chạy các tác vụ hàng loạt trên AWS.
Nếu bạn đang sử dụng hệ điều hành Windows hoặc Mac thế hệ cũ, bạn có thể sử dụng Docker Toolbox. Đây là một bộ công cụ cho phép bạn chạy nền tảng này trên Windows và Mac, bao gồm Engine, Client, Compose và Kitematic.
5. Quy trình thực thi của hệ thống khi sử dụng Docker
Cụ thể, các bước thực thi hệ thống như sau:
5.1. Build
Đây là bước đầu tiên để tạo Dockerfile. Trong Dockerfile, chúng ta có thể chứa code của mình, cùng với tất cả các thư viện cần thiết để chạy ứng dụng. Cụ thể, Dockerfile sẽ được xây dựng trên một máy tính đã cài đặt sẵn Engine. Sau khi xây dựng xong, chúng ta sẽ có được một container, trong đó chứa ứng dụng.
5.2. Push
Để lưu trữ container lên cloud, chúng ta có thể sử dụng một kho lưu trữ, chẳng hạn như Hub. Để thực hiện việc này, chúng ta cần có một tài khoản Hub. Sau khi tạo tài khoản, chúng ta có thể sử dụng lệnh push để đẩy container lên kho lưu trữ.
5.3. Pull, Run
Để máy tính khác có thể sử dụng container, máy tính của bạn cần phải pull container này về máy đó. Máy tính khác cũng cần phải cài đặt sẵn Engine. Sau khi pull container về, bạn có thể chạy container trên máy tính khác.
6. Những thành phần chính của Docker
Công cụ này có những thành phần chính như sau.
Docker Engine
Engine đóng vai trò như công cụ để đóng gói ứng dụng. Engine bao gồm hai thành phần chính là Docker daemon và Docker client. Daemon là một chương trình cốt lõi của Engine chạy nền trên máy chủ, chịu trách nhiệm tạo, khởi chạy và quản lý các container. Client là một ứng dụng chạy trên máy tính của người dùng và cho phép người dùng tương tác với daemon.
Chức năng của Engine:
- Tạo image: image là một tập tin chứa tất cả các thành phần cần thiết để chạy một ứng dụng. Engine sử dụng một tập lệnh gọi là Dockerfile để tạo image.
- Chạy container: Container là một bản sao nhẹ của hệ điều hành và ứng dụng. Engine sử dụng image để tạo container.
Engine cung cấp một số lợi ích cho việc đóng gói ứng dụng:
- Đóng gói ứng dụng một cách dễ dàng: Engine giúp bạn dễ dàng đóng gói ứng dụng của mình thành một image.
- Chạy ứng dụng một cách nhất quán: Container chạy trên bất kỳ máy chủ nào có cài đặt Engine. Điều này giúp bạn chạy ứng dụng của mình một cách nhất quán trên các môi trường khác nhau.
- Tiết kiệm tài nguyên: Container chỉ sử dụng tài nguyên hệ thống mà ứng dụng của bạn cần. Điều này giúp bạn tiết kiệm tài nguyên hệ thống trên máy chủ của mình.
Docker Hub
Hub là một kho lưu trữ image. Hub cung cấp hàng ngàn image công khai được tạo bởi cộng đồng. Bạn có thể dễ dàng tìm thấy image cần thiết cho ứng dụng của mình trên Hub. Sau đó, bạn có thể pull image về máy tính của mình và sử dụng.
Docker image
Image là một tập hợp các tệp chứa mã nguồn, thư viện, phụ thuộc và mọi thứ cần thiết để chạy một ứng dụng. Image được tạo ra bởi Engine và được lưu trữ dưới dạng một tập tin nhị phân. Nội dung của image không thay đổi khi di chuyển, điều này giúp đảm bảo tính nhất quán của ứng dụng.
Image được sử dụng để chạy các container. Khi bạn chạy một container, Engine sẽ tạo ra một môi trường ảo cho ứng dụng của bạn chạy. Môi trường ảo này được gọi là sandbox.
Bạn có thể tự build image của riêng mình hoặc sử dụng các image miễn phí được cung cấp bởi cộng đồng. Để build image, bạn cần tạo một tập lệnh gọi là Dockerfile.
Dockerfile
Dockerfile chứa các hướng dẫn về cách tạo image.
7. Lý do nên sử dụng Docker?
Việc cài đặt và triển khai ứng dụng trên một hoặc nhiều máy chủ là một quá trình phức tạp và tốn nhiều thời gian. Điều này đòi hỏi phải cài đặt các công cụ và môi trường cần thiết cho ứng dụng, đồng thời đảm bảo ứng dụng chạy chính xác trên từng máy chủ. Ngoài ra, nhà lập trình còn phải đối mặt với một thách thức nữa, đó là sự không đồng nhất giữa các môi trường trên các máy chủ khác nhau. Để giải quyết những thách thức này, công cụ trên cung cấp một giải pháp hiệu quả.
Vận chuyển phần mềm nhanh hơn
Công cụ này giúp vận chuyển phần mềm nhanh hơn gấp 7 lần so với không sử dụng. Công cụ này đóng gói ứng dụng thành các container nhỏ gọn, dễ vận chuyển. Điều này giúp các nhà phát triển có thể triển khai ứng dụng của mình nhanh chóng và dễ dàng hơn.
Đơn giản hóa việc vận hành ứng dụng
Công cụ này giúp đơn giản hóa việc vận hành ứng dụng. Ứng dụng được đóng gói vào các container nhỏ gọn, dễ quản lý. Điều này giúp các nhà vận hành có thể triển khai, phát hiện và khắc phục vấn đề ứng dụng một cách dễ dàng và hiệu quả hơn.
Di chuyển ứng dụng mượt mà
Công cụ này giúp di chuyển ứng dụng từ môi trường phát triển cục bộ đến môi trường sản xuất một cách mượt mà và nhanh chóng. Điều này là do nền tảng sẽ đóng gói ứng dụng thành các container nhỏ gọn, dễ vận chuyển. Các container này có thể được chạy trên bất kỳ máy chủ nào có cài đặt Engine, giúp việc di chuyển ứng dụng trở nên dễ dàng và hiệu quả hơn.
Tiết kiệm chi phí
Công cụ nàygiúp tiết kiệm chi phí bằng cách tăng khả năng tận dụng tài nguyên máy chủ. Các container chỉ sử dụng những tài nguyên hệ thống cần thiết cho ứng dụng của bạn, điều này có nghĩa là bạn có thể chạy nhiều ứng dụng hơn trên cùng một máy chủ, giảm số lượng máy chủ cần thiết, dẫn đến tiết kiệm chi phí.
8. Lúc nào nên sử dụng Docker?
Dưới đây là một số trường hợp điển hình mà công cụ này phát huy tối đa tính hiệu quả:
Triển khai kiến trúc Microservice
Kiến trúc Microservice là một giải pháp để phát triển và triển khai ứng dụng bằng cách chia ứng dụng thành các dịch vụ nhỏ, độc lập. Mỗi dịch vụ có thể được triển khai, quản lý và mở rộng một cách độc lập.
Đây là một công cụ phù hợp để triển khai kiến trúc Microservice vì nó giúp đóng gói các dịch vụ thành các container nhỏ gọn. Từ đó, giúp việc triển khai và quản lý kiến trúc Microservice trở nên dễ dàng và hiệu quả hơn.
Tăng tốc độ triển khai ứng dụng
Công cụ này giúp đơn giản hóa và tự động hóa quá trình xây dựng, đẩy lên server và thực thi ứng dụng. Điều này có thể giúp các công ty tăng tốc độ triển khai ứng dụng và cải thiện hiệu quả hoạt động.
Ví dụ: Công cụ này có thể được sử dụng để xây dựng ứng dụng từ mã nguồn, đẩy ứng dụng lên máy chủ và thực thi ứng dụng chỉ bằng một lệnh duy nhất. Điều này có thể giúp các nhà phát triển tiết kiệm thời gian và công sức.
Scale ứng dụng linh hoạt
Công cụ này giúp scale ứng dụng một cách linh hoạt. Điều này có nghĩa là bạn có thể dễ dàng thêm hoặc xóa các container khi cần thiết.
Ví dụ: nếu bạn có một ứng dụng web cần xử lý lượng lưu lượng truy cập cao, bạn có thể dễ dàng thêm các container mới để tăng khả năng xử lý của ứng dụng.
Tạo môi trường local giống với môi trường sản xuất
Công cụ này giúp tạo môi trường local giống với môi trường sản xuất. Điều này có thể giúp các nhà phát triển xây dựng và thử nghiệm ứng dụng một cách hiệu quả hơn.
Tóm lại, đây là một công cụ mạnh mẽ có thể được sử dụng trong nhiều trường hợp khác nhau. Những trường hợp được liệt kê ở trên là một số trường hợp điển hình mà Docker có thể được sử dụng hiệu quả.
9. Lợi ích khi sử dụng Docker
Công cụ này mang lại nhiều lợi ích cho các nhà phát triển và vận hành, bao gồm:
- Khởi động và dừng container nhanh chóng: Container chỉ sử dụng tài nguyên hệ thống cần thiết cho ứng dụng của bạn, do đó bạn có thể khởi động và dừng chỉ trong vài giây.
- Tăng khả năng di chuyển: Container có thể được triển khai trên bất kỳ hệ thống nào có cài đặt Engine, giúp việc di chuyển ứng dụng từ môi trường phát triển sang môi trường sản xuất trở nên dễ dàng hơn.
- Tăng khả năng tái sử dụng: Container có thể được tái sử dụng cho nhiều ứng dụng khác nhau, giúp bạn tiết kiệm thời gian và công sức.
- Tăng khả năng bảo mật: Container được cách ly với các container khác, giúp giảm thiểu rủi ro bảo mật.
Xem thêm: [Bật Mí] Apache là gì? | Tổng hợp kiến thức [A-Z] về Apache
10. Hướng dẫn cách cài đặt Docker
Để cài đặt công cụ này, bạn có thể thực hiện theo các hướng dẫn sau.
10.1. Cài đặt Docker trên Windows 10
Cách cài đặt trên Windows
- Tải bộ cài đặt Docker Desktop for Windows từ trang web chính thức: https://docs.docker.com/desktop/install/windows-install/
- Chạy file cài đặt và làm theo hướng dẫn.
- Đối với Windows 10, bạn cần kích hoạt chế độ Hyper-V virtualization.
Các cách kích hoạt Hyper-V virtualization
Cách 1: Sử dụng PowerShell
Chạy lệnh sau để kích hoạt Hyper-V:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
Cách 2: Sử dụng thiết lập Windows
- Nhấn phải chuột vào biểu tượng cửa sổ, chọn Apps and Features.
- Chọn Programs and Features.
- Chọn Turn Windows Features on or off.
- Đánh dấu vào Hyper-V như hình dưới.
10.2. Cài đặt Docker trên macOS
Bạn tải bộ cài đặt dành cho Mac tại link: https://docs.docker.com/desktop/install/mac-install/ và cài đặt đơn giản như các công cụ thông thường.
10.3. Cài đặt Docker trên Ubuntu
Bạn 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
Sau khi cài đặt, bạn có thể thêm user hiện tại vào group để có thể chạy các lệnh mà không cần sử dụng sudo.
Để thực hiện việc này, bạn cần mở terminal và chạy lệnh sau:
sudo usermod -aG docker $USER
Thay thế $USER bằng tên user của bạn.
Ngoài ra, nếu bạn muốn sử dụng Docker Compose, bạn cần cài đặt thêm. Compose là một công cụ giúp bạn tạo và quản lý các ứng dụng. Để cài đặt Compose, bạn có thể chạy lệnh sau:
sudo apt install docker-compose
Tùy thuộc vào hệ điều hành bạn đang sử dụng.
Nếu bạn có nhu cầu sử dụng Docker Machine, bạn cần cài đặt thêm Machine và VirtualBox. Machine là một công cụ giúp bạn tạo và quản lý các máy ảo chạy Engine. VirtualBox là một công cụ tạo máy ảo.
Để cài đặt Machine, bạn có thể chạy lệnh sau:
sudo apt-get install docker-machine
Để cài đặt VirtualBox, bạn có thể truy cập trang web chính thức của VirtualBox và tải xuống bộ cài đặt phù hợp với hệ điều hành của bạn.
10.4. Cài đặt Docker trên CentOS7/RHEL7
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 thêm Compose
sudo yum install epel-release
sudo yum install -y python-pip
sudo pip install docker-compose
sudo yum upgrade python*
docker-compose version
10.5. Cài đặt Docker trên CentOS8/RHEL8
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
# Nếu lỗi, bạn chạy lệnh sau
sudo dnf install –nobest docker-ce -y
sudo usermod -aG docker $(whoami)
sudo systemctl enable docker.service
sudo systemctl start docker.service
#Cài thêm Compose
sudo yum install epel-release
sudo yum -y install python2-pip
sudo pip2 install docker-compose
sudo yum upgrade python*
docker-compose version
11. Một số câu lệnh cơ bản
Để quản lý các thành phần, bạn có thể sử dụng giao diện dòng lệnh (CLI) của hệ thống.
- Trên macOS và Linux, bạn mở terminal và gõ các lệnh.
- Trên Windows, bạn có thể sử dụng PowerShell để chạy các lệnh.
Dưới đây là một số câu lệnh cơ bản thường được sử dụng.
List image/container:
$ docker image/container ls
Xóa image/container:
$ docker image/container rm <tên image/container >
Xóa tất cả image hiện có:
$ docker image rm $(docker images –a –q)
List all container hiện có:
$ docker ps –a
Dừng một container cụ thể:
$ docker stop <tên container>
Chạy container từ image và thay đổi tên container:
$ docker run –name <tên container> <tên image>
Dừng tất cả container:
$ docker stop $(docker ps –a –q)
Xóa tất cả container hiện có:
$ docker rm $(docker ps –a –q)
Show log a container:
$ docker logs <tên container>
Build một image từ container:
$ docker build -t <tên container>
Tạo một container chạy ngầm:
$ docker run -d <tên image>
Tải một image trên Hub:
$ docker pull <tên image>
Start một container:
$ docker start <tên container>
12. Hướng dẫn cách sử dụng Docker toàn tập
Để sử dụng công cụ này, bạn cần biết những thao tác đơn giản như sau.
12.1. Docker Container
Container là một môi trường chạy ứng dụng được đóng gói gọn nhẹ và di động. Nó là một instance của image, chứa tất cả các thư viện và thiết lập cần thiết để ứng dụng hoạt động.
Cách chạy một container
Để khởi chạy một Container trên hệ thống của bạn, hãy sử dụng lệnh. Ví dụ lệnh bên dưới sẽ tạo một Container từ image có tên “hello-world”.
docker run hello-world
Để tạo một instance chạy hệ điều hành CentOS, hãy sử dụng lệnh với tùy chọn -it. Tùy chọn này sẽ cung cấp cho bạn một phiên tương tác với pseudo-TTY, cho phép bạn truy cập shell của container ngay lập tức.
docker run -it centos
List danh sách container
Để liệt kê các container đang chạy trên hệ thống hiện tại, hãy sử dụng lệnh dưới đây. Lệnh này sẽ không liệt kê các container bị dừng. Ngoài ra, lệnh này cũng sẽ hiển thị Container ID, name và các thông tin hữu ích khác về container.
docker ps
Để liệt kê tất cả các container, bao gồm cả container bị dừng, hãy sử dụng tùy chọn -a.
docker ps -a
Tìm kiếm tất cả thông tin chi tiết về container
docker inspect cc5d74cf8250
Trong đó: cc5d74cf8250 là id container
Xóa container
Để xóa một container đang tồn tại, hãy sử dụng lệnh sau. Bạn cần cung cấp ID hoặc tên của container để xóa.
docker stop cc5d74cf8250
docker rm cc5d74cf8250
12.2. Docker image
Image là một tệp tin không thay đổi, chứa tất cả các thành phần cần thiết để chạy một container. Image có thể được tạo bằng các lệnh có sẵn, và sau đó được sử dụng để tạo một container mới bằng lệnh run.
List danh sách các images
Để liệt kê tất cả images có sẵn trên máy tính của bạn, hãy sử dụng lệnh sau.
docker images
Tìm kiếm image
Để tìm kiếm các images trên Hub, hãy sử dụng lệnh search. Ví dụ, lệnh sau sẽ tìm kiếm các images CentOS:
docker search centos
Tải image
Để download bất kỳ image từ Hub, ví dụ, để download image CentOS phiên bản mới nhất về máy local, bạn có thể sử dụng lệnh sau:
docker pull centos
Xóa image
Để xóa bất kỳ image nào từ hệ thống local, ví dụ, để xóa image CentOS, bạn có thể sử dụng lệnh sau:
docker rmi centos
12.3. Dockerfile
Dockerfile là một file văn bản chứa các chỉ dẫn để xây dựng một image. Tên file mặc định là Dockerfile. Bạn có thể tạo Dockerfile trong thư mục hiện tại để xây dựng một image tùy chỉnh.
Cách build image với Dockerfile
Dockerfile được đặt ở vị trí gốc trong container khi build xong. Bạn có thể sử dụng lệnh build để build image. Lệnh này sẽ đọc Dockerfile từ thư mục hiện tại.
docker build -t image_name .
Bạn có thể sử dụng tùy chọn -f với lệnh build để chỉ định Dockerfile từ bất kỳ vị trí nào trong hệ thống file.
docker build -t image_name -f /path/to/Dockerfile .
Bên trong Dockerfile có gì?
FROM
Chỉ thị FROM thiết lập image cơ sở cho các chỉ dẫn tiếp theo. Chỉ thị này phải là chỉ thị đầu tiên trong Dockerfile.
FROM ubuntu
FROM tecadmin/ubuntu-ssh:16.04
LABEL
Label là cách tổ chức các image hiệu quả. Bạn có thể sử dụng label để ghi lại thông tin như địa chỉ nhà phát triển, tên nhà cung cấp, phiên bản image, ngày phát hành,…. Mỗi dòng label phải bắt đầu bằng từ khóa LABEL.
LABEL maintainer=” “
LABEL vendor=” “
LABEL com.example.version=”1.1.1″
RUN
Chỉ thị RUN cho phép bạn chạy các lệnh trong thời gian build image. Bạn có thể sử dụng chỉ thị này để cài đặt các package, cấu hình môi trường, hoặc thực hiện bất kỳ tác vụ nào khác cần thiết cho image của bạn.
RUN apt-get update
RUN apt-get install -y apache2 automake build-essential curl
COPY
Chỉ thị COPY được sử dụng để copy file và thư mục từ hệ thống host sang image trong khi build. Lệnh COPY đầu tiên sẽ copy tất cả file từ thư mục host html/ vào thư mục /var/www/html trên image. Lệnh COPY thứ hai sẽ copy tất cả file có phần mở rộng .conf vào thư mục /etc/apache2/sites-available/.
COPY html/* /var/www/html/
COPY *.conf /etc/apache2/sites-available/
WORKDIR
Chỉ thị WORKDIR thiết lập thư mục làm việc hiện tại cho các chỉ thị RUN, CMD, ENTRYPOINT, COPY,… trong quá trình build.
WORKDIR /opt
CMD
Chỉ thị CMD được sử dụng để chạy các dịch vụ hoặc phần mềm có trong image, cùng với bất kỳ tham số nào khác khi khởi chạy container. Cú pháp của CMD rất đơn giản:
CMD [“executable”,”param1″,”param2″]
CMD [“executable”,”param1″,”param2″]
Ví dụ, lệnh sau dùng để khởi động dịch vụ Apache khi khởi chạy container:
CMD [“apachectl”, “-D”, “FOREGROUND”]
EXPOSE
Chỉ thị EXPOSE chỉ định các cổng mà container sẽ kết nối. Bạn có thể liên kết các cổng hệ thống với các cổng này để truy cập container từ máy chủ.
EXPOSE 80
EXPOSE 443
ENV
Chỉ thị ENV được sử dụng để xác định biến môi trường cho các dịch vụ trong container.
ENV PATH=$PATH:/usr/local/pgsql/bin/ \
PG_MAJOR=9.6.0
VOLUME
Chỉ thị VOLUME tạo một điểm gắn kết với tên được chỉ định, có thể được sử dụng để gắn kết dữ liệu từ máy chủ hoặc container khác.
VOLUME [“/data”]
13. Một số khái niệm của Docker mà bạn nên biết
Một số khái niệm mà có thể bạn sẽ gặp.
- Container: Là phiên bản chạy trực tiếp của image. Image là file chỉ đọc, còn container là file thực thi, cho phép người dùng tương tác và quản trị viên điều chỉnh cài đặt và quy định.
- Volumes: Là nơi lưu trữ dữ liệu của container. Volumes được tạo ra khi container được khởi tạo.
- Machine: Là công cụ tạo ra các Engine trên máy chủ.
- Compose: Là công cụ giúp bạn chạy ứng dụng bằng cách định nghĩa cấu hình các Container trong file cấu hình.
14. Tổng kết
Trong bài viết này, chúng ta đã cùng tìm hiểu về các khái niệm cơ bản như Docker là gì, cách thức hoạt động, và những ưu điểm nổi trội mà công cụ này mang lại trong build, deploy hay running ứng dụng. Hy vọng những thông tin này sẽ giúp bạn hiểu rõ hơn và sử dụng công cụ này hiệu quả trong công việc và cuộc sống. Bạn có thể xem thêm các bài viết khác của VinaHost TẠI ĐÂY hoặc liên hệ với chúng tôi nếu cần tư vấn về dịch vụ:
- Email: support@vinahost.vn
- Hotline: 1900 6046
- Livechat: https://livechat.vinahost.vn/chat.php
Xem thêm:
IIS Là Gì? Hướng Dẫn Cài Đặt và Cấu Hình IIS Server Chi Tiết
Apache Tomcat là gì? | Cách cài đặt Apache Tomcat chi tiết