Tiếng Việt

Công cụ dành cho nhà phát triển · Chạy Docker sang trình chuyển đổi soạn thảo Docker

Cách ánh xạ cờ docker run tới các khóa Soạn: -p, -v, -e, --name và hơn thế nữa

· Cách thức hoạt động

docker soạn developer-workflow

Ánh xạ tùy chọn lệnh chạy Docker tới cổng, ổ đĩa và khóa môi trường trong Compose
Hình minh họa vector ToolAcre gốc

Hầu hết các cờ chạy docker đều có tương đương Compose một-một và một số ít thì không có. Bài đăng này sẽ trình bày sơ đồ ánh xạ để định nghĩa dịch vụ được chuyển đổi có thể đọc như mong đợi.

Một lệnh chạy docker bao gồm ba dòng trong README — nó hoạt động, không ai có thể xem lại và nhóm muốn có compose.yaml

Chạy docker nhiều dòng có thể bắt đầu một dịch vụ ngay hôm nay trong khi ẩn hợp đồng hoạt động của nó trong bí danh shell hoặc README. Tệp Soạn thư sẽ chuyển các lựa chọn tương tự thành định nghĩa dịch vụ có thể xem lại nhưng việc chuyển đổi phải tính đến mọi cờ thay vì âm thầm bỏ cài đặt bảo mật. ToolAcre phân tích lệnh dưới dạng văn bản: nó không bao giờ chạy hình ảnh, mở ổ cắm Docker hoặc triển khai vùng chứa. Hãy coi đầu ra là cấu hình dự thảo vẫn cần người vận hành kiểm tra đường dẫn máy chủ, thông tin xác thực và giả định mạng.

Hình dạng của một dịch vụ — hình ảnh, sau đó là một bộ khóa phản chiếu các cờ, bên dưới dịch vụ: và tên dịch vụ

Soạn YAML bắt đầu trong dịch vụ:, theo sau là tên và hình ảnh dịch vụ:. Không giống như dòng lệnh, các khóa của nó nhóm các giá trị lặp lại như cổng và mục nhập môi trường thành các chuỗi. ToolAcre lấy tên dịch vụ từ --name hoặc hình ảnh và xây dựng mô hình trước khi tuần tự hóa YAML. Các tệp Soạn hiện tại không cần phiên bản cấp cao nhất: key; thêm một cái vì một bài đăng blog cũ hơn cho thấy nó sẽ tạo ra một cảnh báo lỗi thời thay vì cải thiện khả năng tương thích.

Các cờ phổ biến — -p đối với cổng, -v đối với ổ đĩa, -e đối với môi trường, --name đối với container_name, --restart để khởi động lại, --network đối với mạng

Các ánh xạ phổ biến giúp có thể nhận dạng tệp: -p 8080:80 trở thành cổng: với ánh xạ được trích dẫn, -v máy chủ:container trở thành mục nhập ổ đĩa, -e KEY=value đi vào môi trường, --name trở thành container_name, --restart trở thành khởi động lại và --network cần ngữ cảnh mạng. Việc trích dẫn ánh xạ cổng rất quan trọng vì YAML nên coi nó là một chuỗi chứ không phải hiểu dấu câu là một loại khác. Một tập được đặt tên có thể yêu cầu khai báo các tập cấp cao nhất của chính nó; Bạn phải kiểm tra giá trị liên kết của máy chủ với máy nơi Compose sẽ chạy.

Các cờ ít phổ biến hơn — --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host và khóa của chúng

Các cờ như --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label và --add-host có các khái niệm dịch vụ tương ứng nhưng ngữ nghĩa của chúng có thể phụ thuộc vào thời gian chạy và máy chủ lưu trữ. Không được phát minh ra --security-opt không được hỗ trợ dưới dạng khóa trông có vẻ hợp lý hoặc bị loại bỏ một cách vô hình. ToolAcre liệt kê các cảnh báo nêu tên các tùy chọn không được hỗ trợ để người đánh giá có thể hoàn tất việc ánh xạ theo cách thủ công hoặc quyết định rằng Compose không phải là giải pháp thay thế phù hợp. Sự hiện diện của khóa YAML không chứng tỏ rằng dịch vụ bắt đầu với cùng đặc quyền.

Đối số vị trí - hình ảnh trở thành image: và bất kỳ thứ gì sau nó trở thành lệnh:

Tên hình ảnh là đối số vị trí sau khi chạy và các tùy chọn của nó. Các đối số sau hình ảnh trở thành lệnh dịch vụ, không còn cờ chạy Docker; việc di chuyển mã thông báo qua ranh giới đó sẽ thay đổi chương trình nhận được mã thông báo đó. Dấu ngoặc kép và dấu gạch chéo ngược của Shell cũng quan trọng khi chia một ví dụ README thành mã thông báo. Trình phân tích cú pháp của ToolAcre không phải là trình thông dịch shell, do đó, một biến như $HOME nên được xem xét trong ngữ cảnh thay vì cho rằng nó mở rộng như trong shell tương tác ban đầu.

Ví dụ đã hoạt động: chuyển đổi một lần chạy docker của Postgres - lệnh đầy đủ, định nghĩa dịch vụ kết quả và so sánh từng dòng

Hãy xem xét lệnh minh họa docker run -d --name demo-db -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=demo-only --restart trừ khi-stopped postgres:16. ToolAcre phát ra services.demo-db với hình ảnh postgres:16, container_name demo-db, cổng 5432:5432 được trích dẫn, ổ pgdata, mục danh sách môi trường, khởi động lại: trừ khi bị dừng và khai báo ổ pgdata cấp cao nhất. Nó cảnh báo rằng -d là một lựa chọn dòng lệnh; docker soạn -d xử lý nó. “chỉ bản demo” là một phần giữ chỗ giảng dạy không an toàn có chủ ý—không bao giờ nhập mật khẩu cơ sở dữ liệu thực vào YAML được tạo này.

Điều này không bao gồm những gì - cờ không có dịch vụ tương đương (-d, --rm) và những thứ hoàn toàn không có trong lệnh, chẳng hạn như bối cảnh xây dựng

Không phải mọi cờ chạy đều có bản sao thuộc tính dịch vụ lâu bền. -d được xử lý bằng lệnh soạn thảo mà bạn gọi; --rm thuộc về dịch vụ soạn thư một lần chứ không phải dịch vụ dài hạn. Không thể suy ra bối cảnh xây dựng, kho lưu trữ bí mật, chiến lược sức khỏe hoặc phần phụ thuộc đa dịch vụ không có trong lệnh ban đầu. Công cụ này báo cáo các cờ không được hỗ trợ thay vì coi đầu ra của nó là một kế hoạch triển khai hoàn chỉnh. Đọc tài liệu tham khảo dịch vụ Docker Compose trước khi triển khai vùng chứa đặc quyền hoặc vùng chứa nhạy cảm với mạng.

Bài học rút ra: Compose có cùng cấu hình, có cấu trúc — và trình chuyển đổi tạo ra định nghĩa dịch vụ từ lệnh bạn dán

Compose có cùng cấu hình, được cấu trúc để xem xét và lặp lại. Trình chuyển đổi Docker run to Docker soạn thảo cung cấp cho bạn định nghĩa dịch vụ ứng viên trong trình duyệt của bạn và giữ lệnh được dán cục bộ; nó không thực thi Docker. So sánh mọi cờ nguồn với khóa YAML của nó, giải quyết các cảnh báo và xóa bí mật khỏi các khối môi trường đơn giản trước khi áp dụng kết quả cho máy chủ thực.