Đặt tên cho Docker Containers: 3 lời khuyên cho người mới bắt đầu

6 năm trước

 

Giới thiệu

Khi bạn tạo một container Docker, nó được gán một định danh duy nhất toàn cầu (UUID). Đây là những điều cần thiết để tránh trùng tên và thúc đẩy tự động hóa mà không cần sự can thiệp của con người. Họ xác định rất hiệu quả các container cho máy chủ và mạng. Tuy nhiên, chúng cần nhiều nỗ lực hơn để con người  có thể phân biệt giữa, đoạn dài 64 ký tự mà con người có thể đọc được hay biểu mẫu ngắn 12 ký tự được hiển thị thường xuyên hơn, có thể trông giống như 285c9f0f9d3d.

Docker cũng cung cấp các container với tên được tạo ngẫu nhiên từ hai từ, được nối bằng dấu gạch dưới, ví dụ: evil_ptolemy. Điều này có thể làm cho nó dễ dàng hơn để kết nối với một container từ một container khác, nhưng các tên ngẫu nhiên không cung cấp thêm bất kỳ thông tin chi tiết nào về  container ngoài UUID

Sau đây là 3 lưu ý dễ nhớ giúp bạn học cách làm việc với các container.

1 — Đặt tên container khi bạn chạy nó

Bằng cách thêm  --name=meaningful_name vào command  docker run,evil_ptolomy trở nên dễ nhận ra hơn trong các phiên tương tác cũng như trong output của các command như docker ps. Tuy nhiên chúng cũng có giới hạn. Vì tên của container phải đặc biệt nên bạn không thể dùng đặt tên có chủ đích và mở rộng dịch vụ vượt quá một container.

Trên dòng  Command hoặc trong Dockerfile:
docker run --name=meaningful_name

Ví dụ, nếu chúng ta đã chạy một continer dựa trên nginx và khởi động nó như sau:

$ docker run --name nginx -d nginx 

Tên sẽ xuất hiện trong danh sách các container đang chạy:

$ docker ps 
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 
08f333ef7216 nginx "nginx -g 'daemon off" 15 seconds ago Up 14 seconds 80/tcp, 443/tcp nginx 

Khi tên xuất hiện trong output của docker ps và có để được dùng để quản lí container, nó sẽ không xuất hiện trong lời nhắc command của container nếu bạn gắn vào nó hoặc trong file nhật lí. Để hoàn thành thì bạn sẽ cần gán tên máy chủ.

2 — Gán tên máy chủ cho container

Giá trị được cung cấp cho command --hostname được đặt bên trong /etc/hostname và /etc/hosts trong container. Do đó, nó xuất hiện trong lời nhắc command. Nó đóng vai trò trong việc cấu hình contaner DSN và có thể rất hữu dụng trong việc tìm hiểu các giai đoạn của cài đặt đa container. Nó không dễ để truy cập từ bên ngoài container nhưng nó sẽ xuất hiện trong các file nhật kí của container và khi những file đó được ghi vào một ổ đĩa độc lập với máy chủ lưu trữ, nó có thể giúp xác định container dễ dàng hơn

.CLI và Dockerfile:
docker run --hostname=value HOẶC docker run -h value

Trong khi --name và --hostname đều hữu ích cho việc xác định các container, đôi khi, nó không phải vấn đề đặt tên cho container. Thay vào đó thì đó là việc tự container làm cho nó trống thay vì tự chúng ta phải làm

3 —Tự động xoá container khi chúng thoát

 Khi gỡ lỗi, sẽ rất hữu ích nếu container đã dừng vẫn tồn tại sau khi thoát. Bạn có thể giữ lại dữ liệu như tệp nhật ký và điều tra trạng thái cuối cùng của container. Đôi khi, tuy nhiên, bạn biết khi bạn chạy các container mà bạn sẽ không muốn nó xuất hiện khi bạn đang thực hiện. Trong trường hợp này, bạn có thể sử dụng flag --rm để tự động xóa nó khi nó thoát. Điều này có thể giúp mọi thứ trở nên dễ dàng hơn.

Tuy nhiên, hãy cẩn thận! Nếu bạn dùng volume Docker, --rm sẽ xoá bất cứ volume vào không có tên.

CLI and Dockerfile:
docker run --rm

Điều này rất hữu ích khi bạn đang xây dựng một hình ảnh và cần phải đính kèm vào một container đang chạy. Bạn muốn tìm kiếm xung quanh, và bạn không muốn lấp đầy đĩa bằng các container mà bạn không định sử dụng lại.

Kết luận

3 flag cho docker run--name--hostname, và --rm theo cách riêng của chúng, có thể làm cho việc tìm hiểu Docker trở lên dễ dàng hơn. Bạn có thể tìm hiểu kĩ hơn về Docker thông qua các bài viết khác liên quan tới chúng.