한국어

개발자 도구 · Docker는 Docker 작성 변환기로 실행됩니다.

docker run 플래그가 Compose 키에 매핑되는 방식: -p, -v, -e, --name 등

· 작동 원리

도커 작곡하다 개발자 워크플로

Compose의 포트, 볼륨 및 환경 키에 매핑되는 Docker 실행 명령 옵션
원본 ToolAcre 벡터 일러스트

대부분의 docker 실행 플래그에는 일대일 Compose에 해당하는 플래그가 있고 일부에는 아무것도 없습니다. 이 게시물에서는 변환된 서비스 정의가 예상대로 읽힐 수 있도록 매핑을 안내합니다.

README의 세 줄을 포함하는 도커 실행 - 작동하고, 누구도 검토할 수 없으며, 팀은 compose.yaml을 원합니다.

여러 줄의 docker 실행은 쉘 별칭 또는 README에 운영 계약을 숨기면서 오늘 서비스를 시작할 수 있습니다. Compose 파일은 동일한 선택 사항을 검토 가능한 서비스 정의로 이동하지만 변환은 보안 설정을 자동으로 삭제하는 대신 모든 플래그를 고려해야 합니다. ToolAcre는 명령을 텍스트로 구문 분석합니다. 즉, 이미지를 실행하거나 Docker 소켓을 열거나 컨테이너를 배포하지 않습니다. 호스트 경로, 자격 증명 및 네트워크 가정을 확인하기 위해 운영자가 여전히 필요한 초안 구성으로 출력을 처리합니다.

서비스의 모양 - 이미지, 서비스 아래의 플래그를 미러링하는 키 세트 및 서비스 이름

Compose YAML은 services:에서 시작되고 그 뒤에 서비스 이름과 이미지:가 옵니다. 명령줄과 달리 해당 키는 포트 및 환경 항목과 같은 반복되는 값을 시퀀스로 그룹화합니다. ToolAcre는 --name 또는 이미지에서 서비스 이름을 파생시키고 YAML을 직렬화하기 전에 모델을 빌드합니다. 현재 Compose 파일에는 최상위 버전이 필요하지 않습니다: key; 이전 블로그 게시물에서 호환성을 향상시키기보다는 쓸모없는 경고를 생성한다는 것을 보여주었기 때문에 하나를 추가합니다.

공통 플래그 — -p는 포트, -v는 볼륨, -e는 환경, --name은 컨테이너_이름, --restart는 다시 시작, --network는 네트워크

일반적인 매핑을 사용하면 파일을 인식할 수 있습니다. -p 8080:80은 포트가 됩니다. 인용된 매핑을 사용하면 -v 호스트:컨테이너가 볼륨 항목이 되고, -e KEY=값이 환경으로 이동하고, --name이 컨테이너_이름이 되고, --restart가 다시 시작되고 --network에 네트워크 컨텍스트가 필요합니다. YAML은 구두점을 다른 유형으로 해석하지 않고 문자열로 처리해야 하기 때문에 포트 매핑을 인용하는 것이 중요합니다. 명명된 볼륨에는 자체 최상위 볼륨 선언이 필요할 수 있습니다. Compose가 실행될 시스템에 대해 호스트 바인드 마운트를 확인해야 합니다.

덜 일반적인 플래그 — --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host 및 해당 키

--hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label 및 --add-host와 같은 플래그에는 해당 서비스 개념이 있지만 해당 의미는 런타임과 호스트에 따라 달라질 수 있습니다. 지원되지 않는 --security-opt는 그럴듯해 보이는 키로 만들어지거나 눈에 보이지 않게 폐기되어서는 안 됩니다. ToolAcre는 지원되지 않는 옵션의 이름을 지정하는 경고를 나열하므로 검토자는 매핑을 수동으로 완료하거나 Compose가 올바른 대체품이 아니라고 결정할 수 있습니다. YAML 키가 있다고 해서 서비스가 동일한 권한으로 시작된다는 것을 증명하는 것은 아닙니다.

위치 인수 — 이미지는 image:가 되고 그 뒤의 모든 항목은 명령이 됩니다.

이미지 이름은 실행 및 해당 옵션 이후의 위치 인수입니다. 이미지 뒤의 인수는 더 이상 Docker 실행 플래그가 아닌 서비스 명령이 됩니다. 해당 경계를 넘어 토큰을 이동하면 토큰을 받는 프로그램이 변경됩니다. 하나의 README 예제를 토큰으로 분할할 때 쉘 따옴표와 백슬래시도 중요합니다. ToolAcre의 파서는 쉘 해석기가 아니므로 $HOME과 같은 변수는 원래 대화형 쉘에서처럼 확장된다고 가정하기보다는 컨텍스트에서 검토되어야 합니다.

작업된 예: Postgres docker 실행 변환 — 전체 명령, 결과 서비스 정의 및 줄별 비교

예시 명령 docker run -d --name deco-db -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=demo-only --restartUn-stopped postgres:16을 고려해보세요. ToolAcre는 postgres:16 이미지, 컨테이너_이름 데모-db, 인용된 5432:5432 포트, pgdata 볼륨, 환경 목록 항목, restart:Un-stopped 및 최상위 pgdata 볼륨 선언과 함께 services.demo-db를 내보냅니다. -d는 명령줄 선택임을 경고합니다. docker compose up -d가 이를 처리합니다. "데모 전용"은 의도적으로 안전하지 않은 교육용 자리 표시자입니다. 생성된 YAML에 실제 데이터베이스 비밀번호를 커밋하지 마세요.

여기서 다루지 않는 내용 - 해당 서비스가 없는 플래그(-d, --rm) 및 빌드 컨텍스트와 같이 명령에 전혀 없는 항목

모든 실행 플래그에 지속 가능한 서비스 속성 대응 항목이 있는 것은 아닙니다. -d는 호출한 작성 명령에 의해 처리됩니다. --rm은 장기 실행 서비스가 아닌 일회성 작성 실행에 속합니다. 원래 명령에 없는 빌드 컨텍스트, 비밀 저장소, 상태 전략 또는 다중 서비스 종속성은 유추할 수 없습니다. 이 도구는 출력이 완전한 배포 계획인 것처럼 가장하는 대신 지원되지 않는 플래그를 보고합니다. 권한이 있거나 네트워크에 민감한 컨테이너를 배포하기 전에 Docker Compose 서비스 참조를 읽어보세요.

요약: Compose는 동일한 구성, 구조화되어 있으며 변환기는 사용자가 붙여넣은 명령에서 서비스 정의를 생성합니다.

Compose는 검토 및 반복성을 위해 구조화된 동일한 구성입니다. Docker Compose 변환기로 실행되는 Docker는 브라우저에 후보 서비스 정의를 제공하고 붙여넣은 명령을 로컬에 유지합니다. Docker를 실행하지 않습니다. 결과를 실제 호스트에 적용하기 전에 모든 소스 플래그를 YAML 키와 비교하고 경고를 해결하고 일반 환경 블록에서 비밀을 제거합니다.