# docker cơ bản ## Phần 4 **Cú pháp CLI của docker:** ``` docker <Management command> <action command> [OPTIONS]``` **Cú pháp đọc logs của 1 container:** `docker container logs <tên container muốn đọc>` **Những cú pháp theo dõi một container:** ``` 1. docker container top <id hoặc tên container> 2. docker container stats [Container id] 3. docker container inspect (xem cấu hình hiện tại của file) ``` **Cách vào Shell của container** 1. Đối với container mới và vào shell: `docker container run -it` 2. Đối với container đang chạy: `docker container exec <tên container hoặc id container> -it` ***Note:*** Đối với container chạy app thì cần command `bash` ![image](https://hackmd.io/_uploads/Sk6HdrW_T.png) - tên docker luôn là phần cuối cùng trong câu lệnh **Docker thực chất là một process:** 1. Process này được giới hạn tài nguyên trên OS 2. Container dừng và đóng như một process ![image](https://hackmd.io/_uploads/B1LAdWb_p.png) --- ## Phần 5 ### Hệ Thống Network của Docker **Một số câu lệnh** **`Docker network <action-commands>`** ![image](https://hackmd.io/_uploads/HJb8_UWOT.png) Sử dụng `--network -alias` để đặt tên alias cho một container => đây là một cách sử dụng load-balancing ở mức độ dns ![image](https://hackmd.io/_uploads/rySeSI-_6.png) --- ## Phần 6 ### Tự tạo image ![image](https://hackmd.io/_uploads/rJ3zPSfOp.png) **CLI:** `docker image build -t <tên image> <đường dẫn thư mục chứa Dockerfile>` ### Đăng nhập docker hub trên CLI **CLI:** `docker login` ### Push image lên docker hub **CLI:** `docker image push <image-tag>` ### Căn bản về Dockerfile ![image](https://hackmd.io/_uploads/BJmIftzdT.png) **Phân biệt `RUN` và `CMD`**: `RUN` được dùng để chạy các câu lệnh build lên image, còn `CMD` thì được dùng để chạy các câu lệnh sau khi container được chạy. > chưa làm bài tập p6 ---- ## Phần 7 ### Chia sẻ và lưu trữ File cho Container ![image](https://hackmd.io/_uploads/r1Z_BjMua.png) --- ## Phần 8 ### Tự động hóa trong môi trường container ![image](https://hackmd.io/_uploads/HJdNCCuO6.png) ### sử dụng 1. file mô tả yaml 2. **CLI:** `docker-compose` `docker-compose down` để xóa đi hạ tầng mà một cách đơn giản ### Cách viết file docker-compose - Khuyến nghị sử dụng engine docker từ version 3x trở lên (nên sử dụng version gần mới nhất) - Sử dụng cùng CLI `docker-compose` - Sử dụng trong môi trường cluster (docker swarm) - đặt tên là `docker-compose.yml ` - Muốn sử dụng tên khác thì cần dùng option - `docker-compose -f <filename> ### Docker-compose CLI - Chủ yếu dùng cho môi trường dev/test. Môi trường prod thường dùng stack trong docker swarm - 2 câu lệnh thường dùng: - `docker-compose up` -> set up network, volume và bật containers - `docker-compose down` -> tắt hết container và xóa network, volume ### Cú pháp viết docker-compose ![image](https://hackmd.io/_uploads/B1VWFkY_T.png) ![image](https://hackmd.io/_uploads/BJvS9JYu6.png) ![image](https://hackmd.io/_uploads/BkTwcF5O6.png) ## Phần 9: Chạy container trên cluster ### Vì sao? ![image](https://hackmd.io/_uploads/r1WS_lT_p.png) ### Docker swarm Orchestrator ![image](https://hackmd.io/_uploads/S1O7a-Tua.png) - Hỗ trợ môi trường clustering - 1 container chạy ra có thể phân phối điều trên nhiều host khác nhau ### Thực hành - Có thể dùng `docker service ps <name of service>` để xem các service được chạy trên node nào, trạng thái ra sao ![image](https://hackmd.io/_uploads/ByqqJDTOT.png)