Docker run → Docker Compose 변환기
docker run 명령어를 docker-compose 파일로 변환합니다.
Docker run → Docker Compose 변환기 도구 열기
docker run 명령을 docker-compose.yml 형식으로 바꿉니다. compose에 대응하지 않는 옵션은 따로 안내합니다.
사용 순서
- 입력 칸에 docker run 명령을 붙여 넣습니다.
- 결과 칸에 표시된 YAML을 확인합니다.
- 변환되지 않은 옵션 안내가 있으면 해당 설정을 직접 추가합니다.
- 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로 저장하면 문법상 실행할 수 있습니다. 다만 변환되지 않은 옵션은 결과에 없으므로, 실행 전에 안내 문구에 나온 옵션이 필요한지 확인해야 합니다.