본문으로 건너뛰기

docker run 컴포즈 변환

docker run to Compose

docker run 명령을 compose 서비스 정의로 바꾸고 반대 방향 변환도 지원합니다.

`docker run` 명령줄을 그에 해당하는 `compose.yaml` 서비스로 바꿉니다. 명령을 진짜 셸 인용 규칙으로 쪼개기 때문에, `sh -c "…"`로 쓴 엔트리포인트도 공백과 따옴표를 그대로 지킵니다.

🔒 브라우저 안에서만 처리dockercomposeconvertdevops

docker run 명령

compose.yaml

참고

  • -d는 docker run 실행 자체에만 영향을 줍니다. Compose에는 대응하는 항목이 없어서 뺐습니다.
명령을 진짜 셸 인용 규칙으로 쪼갭니다. 그래서 sh -c "…" 같은 엔트리포인트도 공백째 살아남습니다. Compose에 대응이 없는 플래그(--rm, -d)는 안내와 함께 버립니다. 수명 주기는 Compose가 정하기 때문입니다. 모르는 플래그는 조용히 삼키지 않고 이름을 대며 알려 줍니다. 출력의 포트에 따옴표를 치는 이유는, 그러지 않으면 YAML 1.1이 8080:80 을 60진수로 읽기 때문입니다.

사용 방법

  1. 명령을 붙여넣습니다

    줄 이음, 따옴표 친 값, 이미지 뒤에 붙는 명령을 모두 처리합니다. 아무것도 실행하지 않습니다. 글자가 들어가고 글자가 나옵니다.

  2. 출력 아래 안내를 읽습니다

    Compose에 대응이 없는 플래그는 조용히 버리지 않고 목록으로 보여 주고, 모르는 플래그는 이름을 알려 줍니다. 파일을 커밋하기 전에 확인할 값어치가 있는 부분입니다.

  3. compose 파일에 넣습니다

    출력은 서비스 하나입니다. 기존에 있는 것들과 함께 `services:` 아래에 넣고, 명령에 `--name`이 없었다면 원하는 이름을 붙이세요.

자주 묻는 질문

포트에 왜 따옴표가 붙나요?

YAML 1.1이 `8080:80`을 60진수로 읽기 때문입니다. 아무도 원하지 않았지만 모든 YAML 파서가 물려받은 문법입니다. 따옴표를 쳐야 포트 매핑으로 남습니다. Compose에서 가장 유명한 함정입니다.

`--rm`과 `-d`는 어디 갔나요?

안내와 함께 버립니다. 수명 주기는 Compose가 관리하기 때문입니다. 붙임/떼어냄은 `docker compose up`이 정하고 컨테이너 제거는 `docker compose down`이 합니다. 서비스 수준으로 옮길 대응이 없습니다.

compose 파일 전체를 만들어 주나요?

서비스만 씁니다. 네트워크, 최상위 볼륨, 그리고 요즘 Compose가 더는 원하지 않는 `version:` 키는 직접 넣어야 합니다. 대개는 필요하지도 않습니다.

이 도구로 이어지는 것

다음 단계

이 도구의 결과를 그대로 받을 수 있는 도구들입니다.