Docker là một dự án nguồn mở làm cho việc tạo và quản lý các container Linux thực sự dễ dàng. Các container giống như các máy ảo cực nhẹ - chúng cho phép code hoạt động cách ly với các container khác nhưng chia sẻ an toàn các tài nguyên của máy.
Docker container có thể khởi động rất nhanh (tính bằng mili giây) mang lại sự linh hoạt chưa từng thấy trong việc quản lý tải trên toàn bộ cụm của bạn. Chẳng hạn, thay vì chạy chef trên mỗi máy ảo của bạn, nó sẽ nhanh hơn và đáng tin cậy hơn khi hệ thống xây dựng của bạn tạo ra một container và khởi chạy nó trên các máy chủ Linux thích hợp.
Hướng dẫn này sẽ chỉ cho bạn cách khởi chạy container, cài đặt một số phần mềm trên nó, đảm bảo rằng container và tùy chọn khởi chạy nó trên một máy Linux khác. Trước khi bắt đầu, đảm bảo rằng bạn đã có ít nhất một máy Linux và chạy - hãy thử nó trên Amazon EC2 hoặc local với Vagrant
Thông tin cơ bản về Docker CLI
Docker có một CLI đơn giản cho phép bạn làm hầu hết mọi thứ bạn có thể muốn cho một container. Tất cả các lệnh này sử dụng id image (ví dụ be29975e0098), tên image (ví dụ myusername / webapp) và id bộ chứa (ví dụ: 72d468f455ea) thay cho nhau tùy thuộc vào hoạt động bạn đang làm. Điều này gây nhầm lẫn lúc đầu, vì vậy hãy chú ý đặc biệt đến những gì bạn đang sử dụng.Khởi chạy một Container
Khởi chạy container đơn giản như docker run+ tên image mà bạn muốn chạy dấu + để chạy trong container. Nếu image không tồn tại trên local, Docker sẽ cố gắng lấy nó từ public image registry. Sau nữa, chúng ta sẽ khám phá cách sử dụng Docker với private registry. Điều quan trọng cần lưu ý là các container được thiết kế để dừng lại khi lệnh đã thực thi bên trong chúng đã thoát. Ví dụ: nếu bạn chạy /bin/echo hello world theo lệnh của mình, container sẽ bắt đầu, in hello world và sau đó dừng lại:docker run ubuntu /bin/echo hello world
Hãy khởi động một container Ubuntu và cài đặt Apache bên trong của nó bằng cách sử dụng dấu nhắc bash:
docker run -t -i ubuntu /bin/bash
-i là để truy cập vào terminal
-t là để show mấy cái kết quả của lệnh bạn chạy ra.
-i -t có thể viết gọn lại là -it hoặc -ti
Commit container
Sau khi hoàn tất, chúng ta cần commit những thay đổi này vào container của chúng ta với ID container và tên image.Để tìm ID container, mở một terminal khác (container cũ vẫn đang chạy) và đọc ID bằng cách sử dụng docker ps.
Tên image có ở định dạng username/name. Chúng ta sẽ sử dụng vanba như tên người dùng trong ví dụ này, nhưng bạn nên đăng ký một tài khoản người dùng Docker.IO để sử dụng.
Điều quan trọng cần lưu ý là bạn có thể sử dụng user và tên image local, nhưng để đẩy image public registry, tên người dùng phải là một tài khoản người dùng Docker.IO hợp lệ .
Commit container với ID, username và tên của bạn apache:
docker commit 72d468f455ea vanba/apache
Hệ thống overlay filesystem làm việc tương tự như git: image của chúng ta bây giờ được xây dựng trên ubuntu base và thêm một lớp khác với Apache lên trên. Các lớp này được lưu trữ riêng biệt để bạn sẽ không phải pull ubuntu base nhiều lần.
Run container
Bây giờ chúng ta có container Ubuntu với Apache chạy trên một shell và một image của container đó. Hãy khởi động một container mới dựa trên image đó nhưng thiết lập nó để tiếp tục chạy vô thời hạn. Cú pháp cơ bản trông như thế này, nhưng chúng ta cần phải cấu hình một vài tùy chọn bổ sung mà chúng ta sẽ điền vào khi thực hiện:docker run [options] [image] [process]
Bước đầu tiên là nói với Docker rằng tôi muốn chạy vanba/apache image của chúng tôi :
docker run [options] vanba/apache [process]
Chạy container ở background
Khi chạy các container Docker theo cách thủ công, tùy chọn quan trọng nhất là chạy các container trong chế độ detach với cờ -d, nó sẽ in ra ID container nếu thành công. Bất cứ lúc nào bạn có thể chạy docker ps để xem danh sách các container đang chạy. Lệnh của chúng ta bây giờ trông giống như sau:docker run -d vanba/apache [process]
Không chạy container với chế độ detach bên trong các tệp đơn vị hệ thống. Chế độ detach làm ngừng hệ thống init của bạn. Để ngăn vấn đề này, chỉ cần bỏ -d cờ nếu bạn không chạy một cái gì đó bằng tay.
Khởi chạy Apache ở foreground
Chúng ta cần chạy quá trình apache ở foreground, vì container của chúng ta sẽ dừng lại khi quá trình được chỉ định trong docker run lệnh dừng. Chúng ta có thể làm điều này với cờ -D khi bắt đầu quá trình apache2:
/usr/sbin/apache2ctl -D FOREGROUND
Hãy thêm vào lệnh:
docker run -d vanba/apache /usr/sbin/apache2ctl -D FOREGROUND
Truy cập đến cổng 80
Cài đặt apache mặc định sẽ chạy trên cổng 80. Để truy cập container qua cổng 80, chúng ta sử dụng -p và chỉ định cổng trên máy chủ lưu trữ vào cổng bên trong container. Trong trường hợp này, để dùng cổng 80 ta sẽ thêm -p 80:80 trong lệnh:docker run -d -p 80:80 vanba/apache /usr/sbin/apache2ctl -D FOREGROUND
Bây giờ bạn có thể chạy lệnh này trên máy chủ Linux để tạo container. Bạn sẽ thấy trang web apache mặc định khi load localhost:80 hoặc là IP của máy chủ từ xa.
Sử dụng đăng ký Docker
Trước đó, chúng ta đã tải image Ubuntu từ xa từ Docker registry vì nó không tồn tại trên máy local. Chúng ta cũng có thể đẩy image local lên public registry (hoặc private registry) rất dễ dàng với lệnh push:
docker push vanba/apache
Để đẩy lên private repository, cú pháp rất giống nhau. Trước tiên, chúng ta phải thêm tiền tố image của chúng ta với máy chủ lưu trữ đăng ký cá nhân thay vì tên người dùng của chúng ta. Liệt kê các image bằng cách chạy docker images và chèn đúng ID vào lệnh tag:
docker tag f455ea72d468 registry.example.com:5000/apache
Sau khi gắn thẻ, image cần phải được đẩy registry:
docker push registry.example.com:5000/apache
Khi đã hoàn tất quá trình tải lên image, bạn sẽ có thể bắt đầu cùng một container trên một máy chủ Linux khác bằng cách chạy:
docker run -d -p 80:80 registry.example.com:5000/apache /usr/sbin/apache2ctl -D FOREGROUND
Comments
Post a Comment