🌱 Câu chuyện vào debug bên trong Docker image
Khi mà mới làm quen với Docker
image, hay đơn giản là vào bên trong nó xem lỗi do đâu,
chắc hẳn bạn cũng sẽ nghĩ ngay trong đầu là phải bật bash
lên và truy cập vào bên trong image.
Khi build image của Alpine,
chẳng hạn ta set image được kế thừa từ FROM node:16.8.0-alpine
(version mới nhất của Node.js
tại thời điểm viết bài).
Tuy nhiên image được kế thừa này thường default sẵn có /bin/sh
.
Đối với nhu cầu của developer như cd
, ls
hay chạy app bên trong image thì /bin/sh
hoàn toàn có thể đáp ứng được.
Như vậy chúng ta không cần cài bash
vào image nữa cho mệt.
Việc không phải cài bash
tuy chỉ tiết kiệm 4MB đối với image chạy Alpine 3.8 nhưng đối với 100 image thì câu chuyện sẽ khác.
Ngoài ra ta còn tăng tốc độ tạo lập 1 Docker
image mới.
Cách dùng /bin/sh
Trong Dockerfile
ta thêm RUN /bin/sh
để chạy sh
.
Sau đó có thể truy cập vào image như sau:
# run Dockerfile.dev chẳng hạn
docker build -t node-dev-image -f Dockerfile.dev .
# run sh
docker run -it --rm --name dev -v $(pwd):/code node-dev-image sh
# or if you using fish-shell
docker run -it --rm --name dev -v (pwd):/code node-dev-image sh
# let play with `sh`
ls
# exit sh if needed
exit
Tham khảo
Photo by Geran de Klerk on Unsplash