it-box

Docker run → Docker Compose 변환기

docker run 명령어를 docker-compose 파일로 변환합니다.

Docker run → Docker Compose 변환기 도구 열기

docker run 명령을 docker-compose.yml 형식으로 바꿉니다. compose에 대응하지 않는 옵션은 따로 안내합니다.

사용 순서

  1. 입력 칸에 docker run 명령을 붙여 넣습니다.
  2. 결과 칸에 표시된 YAML을 확인합니다.
  3. 변환되지 않은 옵션 안내가 있으면 해당 설정을 직접 추가합니다.
  4. Download docker-compose.yml 버튼으로 파일을 받거나 결과 칸의 내용을 복사합니다.

예시

docker run -d --name web -e A=1 -p 8080:80 --rm nginx:1.25를 넣으면 nginx 서비스에 image nginx:1.25, ports 8080:80, environment A=1, container_name web이 생성되고, -d와 --rm은 변환되지 않았다고 안내됩니다.

한계

docker run 명령 하나만 다룹니다. 여러 서비스, 네트워크, 볼륨 정의를 하나의 파일로 합치지는 않습니다. -d, --rm처럼 compose 파일 항목으로 대응되지 않는 옵션은 결과에서 빠지고 안내 문구로만 표시됩니다. 출력은 들여쓰기 4칸이며 version은 3.9로 고정됩니다.

보안 주의

-e로 넣은 환경 변수 값이나 비밀번호가 결과 YAML에 그대로 적힙니다. 변환된 파일을 저장소에 커밋하기 전에 민감한 값을 .env 파일로 분리하고, 결과에 비밀 값이 남지 않았는지 확인하세요.

배경 지식

docker run은 이미지 하나를 한 번의 명령으로 실행하고, 포트, 볼륨, 환경 변수 같은 옵션을 명령줄에 나열합니다. 명령이 길어지면 같은 설정을 매번 입력하기 어렵고 팀원과 공유하기도 힘듭니다. docker-compose.yml은 이 옵션들을 서비스 단위 선언으로 묶어 파일로 관리하게 해 줍니다.

변환은 명령줄 옵션을 YAML 키에 대응시키는 작업입니다. -p는 ports, -v는 volumes, -e는 environment, --restart는 restart에 해당합니다. 다만 compose 파일이 표현하지 못하는 옵션이 있으며, 이 도구는 그런 옵션을 번역하지 않고 따로 표시합니다.

실무에서는 명령을 한 번 변환해 compose 파일로 옮긴 뒤, 파일을 기준으로 관리하는 흐름이 흔합니다. 변환 결과를 그대로 믿기보다 이미지 태그, 네트워크, 의존 서비스를 직접 검토해야 운영 중 예상과 다른 동작을 줄일 수 있습니다. 포트 충돌이나 볼륨 경로는 호스트마다 다를 수 있으므로 그 부분도 함께 확인해야 합니다.

자주 묻는 질문

docker run의 -d 옵션은 compose에서 어떻게 하나요?

백그라운드 실행은 compose 파일 항목이 아니라 docker compose up -d 명령에서 지정합니다. 그래서 이 도구는 -d를 파일 항목으로 바꾸지 않고 변환되지 않은 옵션으로 안내합니다.

--rm 옵션은 어떻게 대응하나요?

종료 후 컨테이너를 자동으로 삭제하는 옵션은 compose 파일 항목으로 대응되지 않습니다. 같은 효과가 필요하면 docker compose run --rm 명령으로 실행하는 것이 일반적입니다.

변환 결과를 바로 docker compose up에 쓸 수 있나요?

파일 이름을 docker-compose.yml로 저장하면 문법상 실행할 수 있습니다. 다만 변환되지 않은 옵션은 결과에 없으므로, 실행 전에 안내 문구에 나온 옵션이 필요한지 확인해야 합니다.