5.1 Những điều cơ bản về lệnh docker exec
Lệnh docker exec
— công cụ để tương tác với các container đang chạy. Nó cho phép chạy lệnh và mở session interactive bên trong container. Điều này hữu ích cho các tác vụ quản trị, debug và monitoring. Trong bài giảng này, tụi mình sẽ xem chi tiết cách sử dụng lệnh docker exec
, các tham số khả dụng và sẽ đưa ra một vài ví dụ áp dụng thực tế của nó.
Lệnh docker exec
được sử dụng để thực hiện lệnh trong container đang chạy. Bằng nó, cậu có thể vào container và tương tác với nó, như thể cậu đang làm việc trực tiếp với server.
Cú pháp
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Ở đây:
-
CONTAINER
: tên hoặc ID của container mà cậu muốn truy cập. -
COMMAND
: lệnh mà cậu muốn thực hiện bên trong container. ARG...
: các tham số cho lệnh.
Ví dụ sử dụng cơ bản
Ví dụ này sẽ thực hiện lệnh ls /app
bên trong container my_container
, cho phép cậu xem nội dung của thư mục /app
trong container.
docker exec my_container ls /app
5.2 Các tham số của lệnh docker exec
Lệnh docker exec hỗ trợ một số tùy chọn cho phép cấu hình hành vi thực thi các lệnh bên trong container.
1. Mở phiên làm việc tương tác
Để bắt đầu phiên làm việc tương tác, dùng kết hợp các tùy chọn -i
(interactive) và -t
(pseudo-TTY)
.
docker exec -it my_container /bin/bash
Trong ví dụ này, terminal tương tác Bash
sẽ được mở bên trong container my_container
. Điều này cho phép bạn thực thi lệnh trong thời gian thực.
2. Thực thi lệnh ở chế độ tách rời
Nếu bạn cần thực thi một lệnh trong container mà không cần đợi nó hoàn thành, bạn có thể dùng tùy chọn -d
(detached mode).
docker exec -d my_container touch /app/newfile.txt
Trong ví dụ này, lệnh sẽ tạo một file rỗng newfile.txt
trong thư mục /app
của container my_container
. Quyền kiểm soát terminal sẽ được trả về ngay sau khi lệnh thực thi, không cần đợi nó hoàn thành.
3. Chỉ định môi trường người dùng
Bạn có thể truyền biến môi trường vào container bằng tham số -e
.
docker exec -e MY_VAR=value my_container env
Ví dụ này sẽ truyền biến môi trường MY_VAR
vào container và chạy lệnh env
, để hiển thị tất cả các biến môi trường bên trong container.
5.3 Ví dụ sử dụng
Ví dụ 1: Xem các process đang chạy bên trong container
Ví dụ này sẽ chạy lệnh ps aux
bên trong container my_container
và hiển thị danh sách tất cả các process đang chạy.
docker exec my_container ps aux
Ví dụ 2: Kiểm tra trạng thái service trong container
Ví dụ này sẽ chạy lệnh service nginx status
bên trong container my_container
và hiển thị trạng thái của service nginx
.
docker exec my_container service nginx status
Ví dụ 3: Cài đặt package bên trong container
Ví dụ này sẽ cập nhật danh sách package và cài đặt trình soạn thảo vim
bên trong container my_container
.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Các kịch bản thực tế
1. Quản lý container
Lệnh docker exec cho phép admin thực hiện các nhiệm vụ bảo trì bên trong container: chỉnh sửa file cấu hình, kiểm tra logs hoặc thay đổi quyền truy cập file.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Debug ứng dụng
Trong lúc phát triển và kiểm thử ứng dụng, lệnh docker exec giúp lập trình viên kiểm tra trạng thái app, debug và phân tích lỗi.
docker exec -it my_container python /app/scripts/debug.py
3. Giám sát và chẩn đoán
Với docker exec, bạn có thể chạy các lệnh chẩn đoán và theo dõi trạng thái của container: kiểm tra việc sử dụng tài nguyên, kết nối mạng và các chỉ số khác.
docker exec my_container top
Câu lệnh này sẽ chạy tiện ích top bên trong container my_container và hiển thị việc sử dụng tài nguyên hiện tại.
5.5 Khuyến nghị bổ sung
1. Đảm bảo an toàn
Khi sử dụng lệnh docker exec, cần phải chú ý đến vấn đề an ninh. Hãy đảm bảo rằng quyền truy cập vào các container được giới hạn và chỉ những người dùng được ủy quyền mới có thể thực thi lệnh bên trong các container.
2. Tự động hóa nhiệm vụ
Bạn có thể tự động hóa các tác vụ thường xuyên bằng cách sử dụng script sử dụng lệnh docker exec. Điều này cho phép tạo các luồng công việc phức tạp và tự động hóa việc quản lý container.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Script này sẽ thực thi lệnh uptime
trên tất cả các container đang chạy và xuất thời gian hoạt động của chúng.
3. Log và gỡ lỗi
Đôi khi việc thực thi lệnh có thể kết thúc với lỗi. Trong những trường hợp này, việc xem log của container rất hữu ích để xác định nguyên nhân.
docker logs my_container
GO TO FULL VERSION