Rồi. Thế là đại khái các bạn đã biết mục đích sử dụng, các khối trực quan của Docker. Bây giờ sẽ là các bài phân tích sâu vào các thành phần của Docker để dần dần thật sự làm quen với nó. Trong các bài mình sẽ đồng thời lồng các lưu ý mình rút ra từ việc triển khai hệ thống thật, nên là mong các bạn chú ý kĩ các đoạn tô đỏ. Ngoài ra các đoạn bôi xanh là các câu lệnh được sử dụng nhiều.
Bài này khá nặng, thậm chí mục đích chính để khi các bạn chưa rõ về câu lệnh có thể quay lại xem và từ đấy tìm hướng tư duy. Đây vẫn còn những thông tin của Docker như Swarm, key, api những thứ một dev cơ bản sẽ không mò tới làm gì. Mình sẽ tàm thời bỏ lại ở bài [101], chờ có [102] thì mình nói.
Thôi, không dài dòng văn tự nữa. Chúng ta cùng vào với việc liệt kê các đối tượng trực quan:
- Đối tượng lưu trữ image Registry.
- default registry : registry mặc định cũng như quan trọng nhất là dockerhub. Tại đây bạn có thể public các image của mình cũng như lấy các image nền official khác để build image.
- side registry : có thể là do bạn tự deploy hoặc bên thứ 3 nào đó.
- Đối tượng Host side :
- Docker Deamon : Đối tượng quản lý triển khai Docker Container và Image cũng như xử lý lệnh từ phía client.
- Images : Docker Image bản chất là một file và nó chứa rất nhiều layer. Docker Image được build từ intruction hay còn gọi là Dockerfile và sau đó chúng ta có thể dùng Docker Image để khởi chạy các Container. Hiểu nó như một file nén và giải nén ra nhất nhiều file khác nhau cũng được. Image là một củ hành.
- Container : Đã nói khá rõ ở trước, container là một vùng khởi chạy môi trường được tạo ra sau khi chúng ta khởi chạy từ image. Đây là đối tượng quan trọng nhất với những bạn không định sử dụng docker quá sâu. Container như lớp vỏ khô cuối cùng của củ hành, nhớ thế sau mình giải thích sau.
- Đối tượng Client side ( ở đây chỉ bao gồm cli mà các bạn tương tác, còn những phần liên quan api cho nhà phát triển và các đối tượng tương tác swam mình sẽ không nhắc tới ) :
- Đối tượng tương tác theo dõi và sửa đổi trên host :
- docker info : thông tin docker và thông tin máy.
- docker ps : docker process hiển thị tất cả các container và thông tin chúng.
- docker attach : đồngbộ input và output cũng như thông tin logs ra terminal máy host ( khi đã attach bạn tắt terminal là container cũng tắt, hết sức cẩn thận khi sử dụng ).
- docker cp : copy dữ liệu từ docker về máy host và ngược lại.
- docker events : monitor các lệnh docker đang chạy trên server.
- Đối tượng tương tác image :
- docker run : sử dụng một image để khởi chạy ra container tương ứng, trước khi tới bài docker-compose thì đây sẽ là dòng lệnh chạy nhiều nhất.
- docker build : tạo ra một docker image từ dockerfile và cả tấn thứ phải học để có thể tạo ra một image chuẩn.
- docker images : hiển thị tất cả các image trong máy.
- docker tag : đặt thêm tag để quy định version cho image
- docker prune : xoá các image không sử dụng.
- docker save/load : Save lại image dưới dạng vật lý và Load lại image trên một máy. Save và Load xuất hoàn toàn image tất cả layer.
- docker history : hiển thị lịch sử của image.
- docker rmi : xoá image.
- Đối tượng tương tác container :
- docker pause/unpause : pause tạm dừng toàn bộ process của container và khôi phục từ điểm tạm dừng khi chạy unpause
- docker stop/start : stop sẽ chờ một khoảng thời gian theo lệnh thiết lập ( mặc định là 10s ) sau đó kill process của container, start sẽ khởi chạy lại container đó.
- docker restart : khởi chạy lại container.
- docker diff : hiển thị tất cả các thay đổi ở tầng directory trong filesystem container.
- docker exec : truy cập vào container, chạy lệnh trong môi trường.
- docker logs : xem logs của container, debug etc.
- docker rm : xoá một container, tất nhiên là phải stop trước hoặc là force.
- docker export/import : xuất ra một container snapshot, một snapshot có nghĩa là khi chuyển sang máy khác sẽ chỉ tính là một layer.
- docker rename : đổi tên container.
- Đối tượng tương tác với registry :
- docker pull : lấy các image dựa theo docker run hoặc docker file từ registry về local.
- docker push : đẩn image mới lên registry.
- docker login : đăng nhập 1 registry.
- docker logout : đăng xuất 1 registry.
- docker search : tìm image trên docker hub.
- Đối tượng network của container.
- docker network create : tạo mạng ảo mới, tầng docker.
- docker network connect : container join vào một network.
- docker network disconnect :container out network.
- docker network ls : list tất cả network.
- docker network prune : xoá mạng không được sử dụng.
- docker network rm : xoá một network
- docker network inspect : xem nội dung một network.
- Đối tượng volume :
- docker volume ls : danh sách volume.
- docker volume create : external volume, tạo trước các thứ.
- docker volume prune : xoá volume không được sử dụng.
- docker volume rm : xoá một volume
- docker volume inspect : xem nội dung một volume.
- Đối tượng tương tác theo dõi và sửa đổi trên host :
Bài này là để note lại, thậm chí không cần học gì mấy đâu, hỏng bố não ra. Từ những bài sau mình sẽ đặt ra các luồng chạy của hệ thống.
- Khởi chạy container đơn luồng, theo dõi, check lỗi, phương pháp truy cập xử lý.
- Layer trong Docker. Dockerfile.
- Vấn đề lưu trữ persistent và volume.
- Network trong Docker.
- Xây dựng Dockerfile.
- Docker-compose cơ bản.
- Docker Swarm và K8s. Áp dụng thế nào ở đâu.
- Từ bài này sẽ là xây dựng HomeLab. ừ vì nó khá vui!! Tất nhiên chỉ là môi trường Docker-compose thôi. K8s season sau đi các bạn.