# 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`

- 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

---
## Phần 5
### Hệ Thống Network của Docker
**Một số câu lệnh**
**`Docker network <action-commands>`**

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

---
## Phần 6
### Tự tạo image

**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

**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

---
## Phần 8
### Tự động hóa trong môi trường container

### 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



## Phần 9: Chạy container trên cluster
### Vì sao?

### Docker swarm Orchestrator

- 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
