Cơ bản về docker
Bài đăng này đã không được cập nhật trong 7 năm
Khái niệm
Docker - đây là một công cụ tạo môi trường được packaging (Container) trên máy tính độc lập mà không làm tác động tới môi máy, môi trường trong Docker sẽ chạy độc lập. Mỗi containers chứa ứng dụng gồm chứa các thư viện riêng, nhưng kernel được chia sẻ với các containers khác. Mỗi kernel được chạy trong các môi trường độc lập với nhau. Docker infrastructure chạy được trên mọi máy tính, đám mây hay nền tảng nào. Vì vậy bạn có thể vận chuyển ứng dụng đến bất cứ đâu và không cần phải quan tâm đến môi trường phát triển, thiếu thư viện, ... Tựu chung lại thì Docker rất tốt tại việc xây dựng và chia sẻ Disk Image qua hệ thống Docker Index, là một phần mềm quản lý cơ sở hạ tầng, làm việc tốt vời với các công cụ quản lý file config (vd: Chef, Puppet), sử dụng btrfs để giảm sát các file hệ thống và có thể được chia sẻ với user khác. (Như cách hoạt động của Git) và có một bộ kho trung tâm của các Disk Images (có thể được public hoặc private), điều này cho phép bạn dễ dàng chạy trên nhiều hệ điều hành khác nhau (Ubuntu, Centos, Fedora, Gentoo).
Khi nào thì sử dụng Docker
Docker là một công cụ đơn giản, như Git hay Java, mà cho phép bạn kết hợp chặt chẽ tới công việc phát triển hay điều hành hàng ngày của bạn. Sử dụng Docker như là một phần mềm quản lý phiên bản (version control system) cho toàn hệ điều hành của bạn. Sử dụng Docker khi bạn muốn đóng góp hay hợp tác hệ điều hành của bạn với một nhóm nào đó. Sử dụng Docker để chạy những dòng code trên laptop của bạn trong môi trường giống hệt như trên server của bạn. Sử dụng Docker khi app của bạn cần trải qua nhiều giai đoạn khác nhau của quá trình phát triển.
Hãy thử dùng và trải nghiệm docker. Mình sẽ liệt kê một số lệnh hay dùng trong Docker
Các lệnh cơ bản
Pull một image từ Docker Hub
docker pull <image name>
Tạo một container từ image có sẵn
docker run -v <thư mục trên máy tính>:<thư mục trong container> -it <image name> /bin/bash
Lệnh trên tạo container, liên kết một thư mục trên máy tính vào bên trong container, và mở bash trong máy đó.
Khi cần phải map cổng đó từ container ra máy tính ngoài, khi đó chúng ta dùng thêm tham số -p như sau:
docker run -v /abc:/abc -p 8080:8080 -it ubuntu /bin/bash
Lệnh trên map cổng 8080 của container ra cổng 8080 của máy tính hiện tại.
Liệt kê các images hiện có
docker images
Trong kết quả trả về của lệnh này, chúng ta lưu ý các thông số: TAG: là tên của image, ví dụ duyetdev/docker-spark IMAGE ID: là ID của image lưu trong hệ thống, ví dụ 91e54dfb1179 Liệt kê các container đang chạy
docker ps
docker ps -a # liệt kê các container đã tắt
CONTAINER ID: Là ID của container đó NAME: Là tên riêng của container, được tạo ra một cách ngẫu nhiên hoặc có thể tự đặt, ví dụ stupefied_blackwell Khởi động và truy cập lại vào một container đã tắt Nếu một container đã tắt (không xuất hiện khi dùng lệnh docker ps nữa, chúng ta có thể chạy lệnh docker ps -a để lấy ID hoặc NAME của nó, sau đó dùng lệnh sau để khởi động và truy cập lại vào đó)
docker start <ID hoặc NAME>
docker exec -it <ID hoặc NAME> /bin/bash
Xoá một container
Nếu một container đã hết giá trị lợi dụng, dù nó đã tắt nhưng nó vẫn chiếm một phần dung lượng trên máy tính, để xoá nó đi, chúng ta dùng lệnh
docker rm <ID hoặc NAME>
Nếu container đang chạy, bạn cũng có thể xoá nhưng phải thêm tham số -f vào sau rm để force remove:
docker rm -f <ID hoặc NAME>
Xoá một image
Cũng như container, nếu bạn đã ko còn nhu cầu sử dụng một image nào đó nữa, thì nên xoá nó đi. Dùng lệnh rmi
docker rmi <ID hoặc NAME>
conclusion
Sự thật là Docker đang dần thay đổi nhiều lập trình viên và đặc biệt là các admin cách làm việc của họ với cộng đồng Docker đang phát triển rất mạnh bạn có thể thử dùng và cảm nhận
All rights reserved