Giới thiệu
Container là một môi trường chạy thực, nơi ứng dụng được đóng gói và khởi động ở bên trong. Ở góc độ người dùng, container
cũng giống như một máy ảo, cũng cần được cung cấp tài nguyên CPU
, RAM
, Network
, ổ đĩa lưu trữ, biến môi trường,…
- Với
network
:container
nằm trong một mạng lưới độc lập so vớiinternet
cũng như mạnglocal
trên máy tính. Nên để truy cập vào ứng dụng trongcontainer
, chúng ta sẽ cần tạo kết nối từ máy tính vào trongcontainer
. CPU
vàRAM
được cung cấp dựa theo yêu cầu sử dụng của ứng dụng trongcontainer
.- Ổ đĩa lưu trữ cũng được cung cấp tạm thời, sẽ bị mất đi nếu không sử dụng cơ chế
volume/bind mount
của Docker để đồng bộ dữ liệu trongcontainer
ra ngoài máy tính. - Biến môi trường: khi tạo ra
container
, chúng ta có thể thêm vàocontainer
các biến môi trường cần thiết.
Yêu cầu
- Đã có kiến thức cơ bản về Linux
- Đã có kiến thức cơ bản về Git
- Terminal đến máy chủ Ubuntu sẵn sàng nhập lệnh
- Đã cài đặt Docker ở bài trước
Nội dung
1. Tạo container từ image
Cú pháp:
docker run [options] <image>
Một số option
thông dụng:
--name <name>
tên container-d
đưa container xuống chạy ngầm-p <host_port>:<container_port>
mapping port-v
tạo kết nối storage giữa host với container-v <host_path>:<container_path>
Kiểu gán thư mục với thư mục-v <volume>:<container_path>
Kiểu gán volume(do docker quản lý) với thư mục
-e <key>:<value>
Thiết lập biến môi trường cho ứng dụng trong container
Ví dụ đơn giản:
docker run nginx
Sử dụng các option
trong câu lệnh docker run
:
docker run -d -p 80:80 docker/getting-started
Khởi chạy ứng dụng cơ sở dữ liệu mysql
với các yêu cầu:
- Đưa
container
xuống chạy ngầm - Mở cổng kết nối: 80 trên
host
→ 80 trêncontainer
- Thêm biến môi trường:
password
chouser root
. Tên biến “MYSQL_ROOT_PASSWORD”, giá trị “mypassword” - Đặt tên container là “mysql-4”
- Sử dụng image là “mysql:5.7”
- Kết nối
storage
giữahost
vớicontainer
sử dụngvolume
có tên “mysql_data”, kết nối vào trongcontainer
ở thư mục “/var/lib/mysql”
docker run -itd -e MYSQL_ROOT_PASSWORD=mypassword -v mysql_data:/var/lib/mysql --name mysql-4 -p 13307:3306 mysql:5.7
2. Liệt kê các container
Cú pháp:
docker container ls
# hoặc
docker ps
Cú pháp trên sẽ hiển thị các container ở trạng thái running
, còn các image
ở trạng thái khác sẽ cần tới option -a
trong câu lệnh để hiển thị lên kết quả câu lệnh.
docker container ls -a
# hoặc
docker ps -a
Các thành phần trong Docker
được quản lý bởi định danh, các định danh này chính là một chuỗi các ký tự không trùng khớp nhau. Ngoài ra, bạn cũng cần để ý tới trạng thái của container
, running
hay exit
?
Trong phần này, quy ước <container>
trong các câu lệnh được hiểu là <container_id>
hoặc <container_name>
.
3. Kiểm tra thông tin của container
Cú pháp:
docker container inspect <container>
# Hoặc
docker inspect <container>
Đọc các thông tin, những thông tin này là hữu ích trong quá trình debug
, tìm ra lỗi sai của container
.
Ví dụ:
docker inspect mysql-4
4. Kiểm tra log ứng dụng
Cú pháp:
docker container logs <container>
docker logs <container>
Ví dụ
docker logs -f mysql-4
5. Truy cập vào trong container
Cú pháp:
- Tương tác một lệnh:
docker container exec <container> <command>
# hoặc
docker exec <container> <command>
- Mở
shell
kết nối tớicontainer
, sử dụng thêmoption -it
và truyền vàoshell
sử dụng (sh
hoặcbash
)
docker container exec -it <container_id> <shell>
# hoặc
docker exec -it <container_id> <shell>
Ví dụ:
docker exec -it mysql-4 sh
6. Trạng thái của container
Dưới đây mô tả các trạng thái của một container
có thể có:
Để chuyển đổi là các câu lệnh tương ứng:
docker create [options] <image>
: đưa container tới trạng tháicreated
docker start <container>
: khởi độngcontainer
từ trạng tháicreated
sangrunning
hoặc từstopped
sangrunning
docker run [options] <image>
: Tạo mớicontainer
từimage
docker pause <container>
: tạm dừng hoạt động củacontainer
docker unpause <container>
: chuyển đổi trạng thái chocontainer
từpaused
sangrunning
docker stop <container>
: tương tự như hành độngshutdown
máy tính.docker rm <container>
: dùng để xóacontainer
, tương tự như hành động vất máy tính vào thùng rác.
Container là một môi trường chạy ứng dụng cách ly, cung cấp các tài nguyên cần thiết như CPU
, RAM
, Network
, ổ đĩa lưu trữ và biến môi trường. Các container
được quản lý thông qua Docker
, cho phép tạo, chạy, dừng, và xóa các container
một cách hiệu quả. Việc sử dụng container
mang lại lợi ích về tính linh hoạt, khả năng mở rộng, và quản lý tài nguyên, giúp tối ưu hóa việc triển khai và vận hành ứng dụng. Với kiến thức cơ bản về Docker
, Linux
, và Git
, bạn có thể dễ dàng tạo và quản lý các container để phục vụ cho nhu cầu phát triển và triển khai ứng dụng của mình.
Tác giả: Đỗ Thiên Giang
Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.