이 두 가지 옵션에 대해 약간 혼란 스럽습니다. 관련이있는 것으로 보입니다. 그러나 그들은 실제로 호환되지 않습니다.
예를 들어 Dockerfiles를 사용하면 실제로 이미지에 커밋해서는 안되는 것 같습니다. git에서 Dockerfile을 실제로 추적하고 변경해야하기 때문입니다. 그렇다면 권위있는 것에 대한 모호성이 없습니다.
그러나 이미지 커밋은 정말 멋져 보입니다. 컨테이너를 직접 수정하고 변경 사항에 태그를 지정하여 다른 이미지를 만들 수 있다는 점이 정말 대단합니다. 이미지 커밋 기록에서 파일 시스템 차이와 같은 것을 얻을 수도 있다는 것을 이해합니다. 대박. 그러나 Dockerfiles를 사용해서는 안됩니다. 그렇지 않으면 이미지 커밋을 수행 한 경우 Dockerfile로 돌아가서 수행 한 작업을 나타내는 몇 가지 변경 작업을 수행해야합니다.
그래서 나는 찢어졌습니다. 이미지 커밋이라는 아이디어가 마음에 듭니다. Dockerfile에서 이미지 상태를 표시 할 필요가 없습니다. 바로 추적 할 수 있습니다. 그러나 이미지에있는 내용에 대한 빠른 개요를 제공하는 일종의 매니페스트 파일에 대한 아이디어를 포기하는 것이 불편합니다. 동일한 소프트웨어 패키지에서 호환되지 않는 두 가지 기능을 보는 것도 당황 스럽습니다.
누구든지 이것에 대해 생각이 있습니까? 이미지 커밋을 사용하는 것이 나쁜 습관으로 간주됩니까? 아니면 Puppet 시절의 파일을 매니페스트하기 위해 첨부 파일을 놓아야합니까? 어떻게해야합니까?
업데이트 :
이것이 의견 기반 질문이라고 생각하는 모든 사람들에게 나는 그렇게 확신하지 못합니다. 주관적인 특성이 있지만 대부분 객관적인 질문이라고 생각합니다. 또한이 주제에 대한 좋은 토론이 유익 할 것이라고 믿습니다.
결국이 게시물을 읽는 사람이 Dockerfile과 이미지 커밋이 서로 어떻게 관련되어 있는지 더 잘 이해할 수 있기를 바랍니다.
업데이트-2017/7/18 :
최근에 이미지 커밋의 합법적 인 사용을 발견했습니다. 회사에서 CI 파이프 라인을 설정하기 만하면 파이프 라인의 한 단계에서 앱 테스트가 컨테이너 내부에서 실행됩니다. 테스트 실행기 프로세스가이를 생성하고 (컨테이너의 파일 시스템에서) 컨테이너가 실행을 중지 한 후 종료 된 컨테이너에서 커버리지 결과를 검색해야합니다. 중지 된 컨테이너를 커밋하여 새 이미지를 만든 다음 커버리지 파일을 표시하고 stdout에 덤프하는 명령을 실행하여 이미지 커밋을 사용합니다. 그래서 이것을 갖는 것이 편리합니다. 이 매우 특정한 경우와는 별도로 Dockerfile을 사용하여 환경을 정의합니다.