Docker Flashcards

(37 cards)

1
Q

Container là gì?

A

Là gói ứng dụng + toàn bộ dependencies, config, môi trường cần thiết để chạy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Image là gì trong Docker?

A

Là gói đóng sẵn (app, libs, config), gồm nhiều layers. Là artifact tĩnh, chưa chạy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Container khác Image ở điểm nào?

A

Container = Image đang chạy trong môi trường cô lập.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Docker Hub là gì?

A

Public repository lớn nhất dùng để chia sẻ Docker images.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Tại sao Alpine Linux thường dùng làm base image?

A

Vì nhẹ, image nhỏ, tải nhanh, triển khai nhanh.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

docker pull <image> làm gì?</image>

A

Tải image từ repository về local.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

docker run -p 5000:3000 appA nghĩa là gì?

A

Gắn cổng 3000 trong container với cổng 5000 của host.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

docker ps -a dùng để làm gì?

A

Liệt kê tất cả container, kể cả container đã dừng.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Lệnh docker login dùng trong trường hợp nào?

A

Khi muốn đăng nhập vào private repo (vd AWS ECR, Docker Hub).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Docker khác Virtual Machine ở điểm nào chính?

A

Docker chia sẻ kernel host → nhẹ và khởi động nhanh; VM có kernel riêng → nặng và chậm hơn.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

docker compose -f app.yml up làm gì?

A

Chạy các container được định nghĩa trong file Docker Compose.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

docker network ls hiển thị gì?

A

Danh sách các network Docker đang tồn tại.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Lệnh nào dùng để xem log container?

A

docker logs <container_id> hoặc docker logs <container_name></container_name></container_id>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Lệnh mở terminal bash bên trong container?

A

docker exec -it <container_name> /bin/bash</container_name>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Docker tạo network kiểu gì khi có nhiều container?

A

Docker tạo virtual network riêng, container trong đó có thể gọi nhau bằng tên.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Làm sao để Mongo Express biết container MongoDB nào để kết nối?

A

Biến môi trường ME_CONFIG_MONGODB_SERVER phải trùng với –name của MongoDB container.

17
Q

Lệnh tạo network mới?

A

docker network create <network_name></network_name>

18
Q

Docker Compose có tác dụng chính là gì?

A

Quản lý, chạy nhiều container cùng lúc, lưu config trong 1 file .yml.

19
Q

Lệnh build image từ Dockerfile?

A

docker build -t <image_name>:<tag> .</tag></image_name>

20
Q

RUN và COPY khác nhau thế nào?

A

RUN chạy lệnh trong image; COPY chỉ sao chép file từ host vào image.

21
Q

ADD khác gì COPY?

A

ADD có thể giải nén .tar hoặc tải file từ URL; COPY thì không.

22
Q

CMD và ENTRYPOINT khác nhau thế nào?

A

CMD có thể bị ghi đè hoàn toàn; ENTRYPOINT thì không, chỉ append thêm tham số.
ENTRYPOINT [“sleep”]
CMD [“5”]
docker run ubuntu-sleeper → chạy sleep 5
docker run ubuntu-sleeper 10 → chạy sleep 10

23
Q

Cách ghi đè ENTRYPOINT khi run container?

A

Dùng option –entrypoint.

24
Q

Dữ liệu lưu trong filesystem của container có tồn tại khi container bị xóa không?

A

Không — nếu không dùng volume/bind mount, dữ liệu mất khi container bị xóa.

25
Docker volume (managed volume) khác bind mount (host volume) chỗ nào?
Docker volume do Docker quản lý (lưu trong /var/lib/docker/volumes/...), bind mount map trực tiếp thư mục cụ thể trên host vào container.
26
Anonymous volume là gì?
Volume do Docker tự tạo với tên/ngẫu nhiên (hash) và map vào container; dữ liệu vẫn tồn khi container bị xóa.
27
Named volume là gì?
Volume do người dùng đặt tên, dễ quản lý hơn anonymous volume.
28
Làm sao để map một thư mục host vào container?
Dùng bind mount, ví dụ -v /host/path:/container/path hoặc khai báo volumes: trong docker-compose.
29
Docker default bridge network có cho phép container gọi nhau bằng tên không?
Không — default bridge có IP nhưng không cung cấp DNS theo tên container.
30
Làm gì để các container gọi nhau bằng tên?
Dùng user-defined bridge (docker network create) hoặc Docker Compose — user-defined networks hỗ trợ DNS theo tên container.
31
Host network mode là gì?
Container dùng network stack của host (không có IP riêng); container nghe trực tiếp trên IP/port của host.
32
Khi nào dùng host network có thể gặp vấn đề?
Nếu nhiều container cố bind cùng port trên host sẽ gây xung đột port.
33
Mạng none trong Docker nghĩa là gì?
Container bị cô lập hoàn toàn, không có network nội bộ hay truy cập host.
34
IPvlan khác Macvlan thế nào (tóm tắt)?
IPvlan: container được gán IP trong cùng dải mạng (có thể chia sẻ MAC); Macvlan: container có MAC riêng, xuất hiện như thiết bị riêng trên LAN.
35
Ở đâu Docker lưu Docker-managed volumes trên host?
Thường dưới /var/lib/docker/volumes//_data.
36
Nếu muốn dữ liệu database tồn khi container bị xóa, phải làm gì?
Mount volume (named volume hoặc bind mount) cho thư mục chứa dữ liệu DB.
37
Docker Compose giúp gì về volumes & network?
Có thể khai báo volumes và networks trong file .yml — Compose tự tạo network chung và volumes theo cấu hình, chạy nhiều container dễ dàng.