Skip to content
An`s Weblog
Go back

Docker Images and Containers

So Sánh

Docker ImageDocker Container
Là template (khuôn mẫu), giống như Class trong OOPLà runtime instance của Image, giống như Object trong OOP
Gồm nhiều lớp (layers), mỗi lớp là 1 instruction trong DockerfileThêm 1 lớp read-write layer phía trên image để lưu thay đổi
Build-time construct: Dùng để build ứng dụngRun-time construct: Dùng để chạy ứng dụng
Read-onlyRead-write layer
Không thay đổi được khi đã build xongCó thể thay đổi khi container đang chạy
Được tạo bởi DockerfileTạo từ Image qua lệnh: docker run

Layer & Container Layer

Giả sử có Dockerfile như sau:

FROM ubuntu:20.04              # Layer 1: Base image
RUN apt-get update             # Layer 2: Cập nhật package list
RUN apt-get install -y python3 # Layer 3: Cài Python3
COPY . /app                    # Layer 4: Copy code vào thư mục /app
WORKDIR /app                   # Layer 5: Đặt thư mục làm việc
CMD ["python3", "main.py"]     # Layer 6: Lệnh chạy mặc định

Mỗi dòng tạo thành 1 layer:

LayerInstructionMô tả
1FROM ubuntu:20.04Image nền Ubuntu 20.04
2RUN apt-get updateCập nhật danh sách package
3RUN apt-get install -y python3Cài đặt Python3
4COPY . /appCopy mã nguồn vào thư mục /app
5WORKDIR /appĐặt thư mục làm việc
6CMD ["python3", "main.py"]Thiết lập lệnh mặc định khi chạy

Mô hình:

Layer 6: CMD ["python3", "main.py"]
Layer 5: WORKDIR /app
Layer 4: COPY . /app
Layer 3: RUN apt-get install -y python3
Layer 2: RUN apt-get update
Layer 1: FROM ubuntu:20.04

Khi Container chạy:

Docker sẽ tạo thêm container layer (read-write) ở trên cùng:

Container Layer (read-write)
└── Layer 6
    └── Layer 5
        └── Layer 4
            └── Layer 3
                └── Layer 2
                    └── Layer 1

Mọi thay đổi khi container đang chạy:


Share this post:

Previous Post
Installing Docker
Next Post
The Docker Engine