Khi phần cứng mạnh đã trở thành ngày càng nhiều của một mặt hàng, khả năng chạy nhiều máy ảo trên một phần cứng duy nhất đã trở thành một tiêu chuẩn công nghiệp. Từ lưu trữ web đến điện toán đám mây, nhiều dịch vụ được chạy trên môi trường ảo hóa. Cũng như các giải pháp ảo hóa máy tính để bàn như VirtualBox, cũng có các giải pháp cấp phép nhanh như Vagrant. Vấn đề với một máy ảo là nó cần phải mô phỏng mọi khía cạnh của máy tính khách bao gồm tất cả RAM hệ thống sẽ được cấp riêng cho máy ảo. Kết quả là, ảo hóa có thể là tài nguyên đói.

Ở đầu kia của quang phổ là môi trường “chroot”, thay đổi thư mục gốc bên dưới cho một tiến trình để nó chạy trong môi trường riêng của nó và không có quyền truy cập vào các tệp khác trên hệ điều hành chủ. Tuy nhiên, không có ảo hóa chút nào, chỉ là một cây thư mục khác.

Điểm giữa giữa hai hệ thống này là một container. Các thùng chứa cung cấp nhiều ưu điểm của một máy ảo nhưng không có chi phí tài nguyên cao. Thùng chứa có nhiều chức năng hơn môi trường chroot trong đó có một số ảo hóa. Ví dụ, các tiến trình được tạo trong một thùng chứa được gán các ID (PID) riêng biệt với các quy trình trong hệ điều hành chủ. Về mặt kỹ thuật, vùng chứa có không gian tên PID riêng. Trong thực tế, các thùng chứa có không gian tên riêng của chúng cho hệ thống con mạng và cho Giao tiếp Liên lạc (Interccess Communication - IPC). Điều đó có nghĩa rằng một container có thể chạy các dịch vụ mạng, như một máy chủ SSH hoặc một máy chủ web.

Từ bên ngoài, container trông giống như một máy ảo với địa chỉ IP của chính nó và các dịch vụ mạng riêng của nó, nhưng bên trong container sử dụng nhiều hệ điều hành chủ hơn là một máy ảo, giống như môi trường “chroot”. Ví dụ, bạn có thể sử dụng một container CentOS đang chạy trên một máy chủ Ubuntu. Các lệnh và tập tin đều là từ CentOS, nhưng nếu bạn hỏi container đang chạy kernel nào, nó sẽ báo cáo nó đang chạy hạt nhân Ubuntu, bởi vì container đang chạy trên hạt nhân từ hệ điều hành chủ.

Docker là một khung công tác ảo hóa dựa trên container cho phép bạn tạo các thùng chứa chứa tất cả các phụ thuộc cho một ứng dụng. Mỗi vùng chứa được giữ cách biệt với bất kỳ vùng chứa nào khác và không có gì được chia sẻ.

Để cài đặt Docker trên hệ thống 64.04 Ubuntu 14.04, hãy chạy các lệnh sau:

 sudo apt-get cập nhật sudo apt-get cài đặt docker.io sudo ln -sf /usr/bin/docker.io / usr / local / bin / docker 

Có một gói Ubuntu hiện có tên là docker, là một khay hệ thống cho KDE3 / GNOME2. Để tránh nhầm lẫn, thời gian chạy container được gọi là docker.io . Lệnh cuối cùng tạo một liên kết từ "/ usr / local / bin / docker" tới "/usr/bin/docker.io", cho phép lệnh docker từ dòng lệnh thay vì docker.io.

Lưu ý : Docker.io cũng có sẵn cho các bản phân phối khác. Đây là hướng dẫn cài đặt nếu bạn không sử dụng Ubuntu.

Để thực thi một shell bên trong container, hãy chạy:

 sudo docker chạy -i -t ubuntu / bin / bash 

Cờ “ -i ” làm cho phiên tương tác và cờ “ -t ” cho docker mô phỏng một phiên đầu cuối. Tham số “ubuntu” cho trình docker chạy một thùng chứa dựa trên Ubuntu 14.04 và “/ bin / bash” là lệnh sẽ được chạy khi container đang hoạt động, tức là chạy shell Bash.

Khi docker chạy nó kiểm tra nếu tập tin hình ảnh cơ sở mong muốn đã được tải xuống trước đó. Nếu không, nó sẽ tải xuống hình ảnh từ index.docker.io, cũng là trang web để sử dụng để xem hình ảnh nào được docker hỗ trợ chính thức.

Để tải xuống các hình ảnh khác mà không cần bắt đầu vùng chứa, hãy sử dụng lệnh “ docker pull ”. Ví dụ: để tải xuống hình ảnh cơ sở CentOS, hãy sử dụng:

 sudo docker kéo centos 

Bạn cũng có thể chạy các lệnh đơn trong một vùng chứa và sau đó để thoát khỏi vùng chứa. Sử dụng lệnh sau để chạy lệnh " ps aux " bên trong thùng chứa CentOS:

 sudo docker chạy centos ps aux 

Khi một container đóng cửa, tất cả các thay đổi sẽ bị mất. Ưu điểm của phương pháp này là khi một container bắt đầu, nó đang ở trong trạng thái đã biết. Điều này rất cần thiết cho môi trường thử nghiệm và cho dịch vụ xây dựng, vv Điều quan trọng đối với việc chạy dịch vụ đám mây, vì vùng chứa có thể được đặt lại nhanh chóng và khởi động lại thành trạng thái ổn định.

Tuy nhiên, điều này cũng có nghĩa là mọi cấu hình được thực hiện hoặc bất kỳ tệp nào được tạo trong vùng chứa sẽ bị mất. Giải pháp là tạo một hình ảnh mới với tất cả các thay đổi của bạn. Hãy thử các lệnh sau:

 sudo docker chạy ubuntu apt-get cài đặt -y nmap sudo docker ps -l 

Lệnh đầu tiên sẽ bắt đầu một container và cài đặt nmap. Lệnh thứ hai sẽ liệt kê thùng chứa mới nhất (-l) được tạo ra, ngay cả khi nó không chạy.

Bây giờ bạn có thể tạo ảnh chụp nhanh của vùng chứa đó và lưu nó vào một hình ảnh mới:

 sudo docker cam kết 1b498c2d502c ubuntu-với-nmap 

“1b498c2d502c” là ID của container như được liệt kê bởi lệnh “ docker ps -l ”. Bây giờ nếu bạn bắt đầu một shell cho thùng chứa ubuntu-with-nmap, nó sẽ có lệnh nmap được cài đặt trước.

 sudo docker chạy -i -t ubuntu-với-nmap / bin / bash 

Có rất nhiều thông tin về docker trong tài liệu của docker.io, và cũng có một số ví dụ được giải thích, bao gồm cách thực hiện các tác vụ phổ biến như chạy một ứng dụng web python và chạy một dịch vụ SSH.

Nếu bạn có bất kỳ câu hỏi nào về docker, có một cộng đồng docker mạnh mẽ sẽ có thể trợ giúp. Bạn cũng có thể đặt câu hỏi trong phần bình luận bên dưới và chúng tôi sẽ xem chúng tôi có thể giúp gì không.