docker commit 이미지 굽기와 docker hub 업로드
도커 허브에 접속해 위와 같이 새로운 reporitory를 public으로 생성해준다.
그 후 ubuntu를 실행시킨 후 docker의 attach 명령어를 사용해 실행한 컨테이너의 bash에 연결해 'apt update', 'apt install vim' 명어를 사용해 vi를 사용할 수 있도록 세팅해준다.
vi 를 사용할 수 있는 환경이 갖추어졌다면 hello라는 이름의 파일을 생성해준다.
bash를 빠져나간뒤 다시 들어와도 hello 파일이 정상적으로 존재하는 것을 확인할 수 있다.
참고
bash 창에서 컨테이너를 종료시키지 않고 빠져나가는 방법은 ^p ^q 이다.
docker commit
docker commit 976 레지스트리주소/vim-ubuntu:1.0
- docker commit
: 도커 컨테이너를 이미지로 변환한다.- 컨테이너에서 변경된 파일 시스템 상태와 설정 등을 포함한 이미지를 생성할 수 있다.
- 이를 통해 변경된 컨테이너 상태를 다른 환경에서 재사용하거나 공유할 수 있다.
- /vim-ubuntu:1.0
: 생성할 이미지와 태그를 의미한다.- 이미지의 이름은 일반적으로 '<레지스트리 주소>/<사용자 이름>/<이미지 이름>' 형식을 따르며, 태그는 이미지의 버전을 지정한다.
참고
'docker commit' 은 일반적으로 권장되지 않는 방법이다.
대신 Dockerfile을 작성하여 이미지를 빌드하고 버전 관리 및 재현 가능성을 유지하는 것이 좋다.
Dockerfile은 도커 이미지를 구성하는 명령어와 설정을 정의하는 텍스트 파일이다.
docker build명령어를 사용하여 Dockerfile에서 이미지를 빌드하는 것이 일반적으로 좋은 관행이다.
'docker commit'을 일반적으로 권장하지 않는 이유는 다음과 같다.
1. 불일치와 재현성: docker commit을 사용하여 컨테이너에서 이미지를 생성하면 컨테이너의 현재 상태와 파일 시스템을 그대로 이미지에 포함시킨다.
이는 컨테이너가 실행 중인 동안에만 존재하는 변경 사항을 포함할 수 있으며, 컨테이너의 초기 상태와 다를 수 있다.
이로 인해 이미지의 재현성과 일관성이 떨어지며, 동일한 이미지를 여러 개의 컨테이너에서 사용하기 어려울 수 있다.
2. 이미지 크기와 효율성: docker commit을 사용하여 이미지를 생성하면 컨테이너의 전체 파일 시스템이 이미지에 포함된다.
이는 불필요한 파일이나 임시 파일, 로그 등 컨테이너 내의 불필요한 데이터까지 이미지에 포함되어 이미지의 크기가 증가하고, 불필요한 리소스 소비가 발생한다.
따라서 이미지 크기가 증가하고 배포 및 저장소 사용에 불필요한 부담을 주는 것이 문제가 될 수 있다.
3. 히스토리 관리와 버전 관리: docker commit을 사용하여 이미지를 생성하면 해당 이미지의 히스토리가 불분명해진다.
Docker는 Dockerfile에서 빌드한 이미지는 각 단계별로 레이어를 구성하여 효율적인 이미지 관리와 버전 관리를 제공한다.
그러나 docker commit을 사용하면 히스토리가 새로운 이미지에 포함되지 않으므로 이미지의 변경 사항을 추적하거나 수정하기가 어려워진다.
4. 보안과 신뢰성: docker commit을 사용하여 생성된 이미지는 검증되지 않은 소스에서 생성된 것이므로 보안 문제가 발생할 수 있다.
Docker Hub와 같은 공식적인 이미지 레지스트리는 이미지의 신뢰성을 검증하기 위해 다양한 보안 기능을 제공하지만, docker commit으로 생성된 이미지는 이러한 보안 기능을 활용할 수 없다.
따라서 Dockerfile을 사용하여 이미지를 빌드하고 버전 관리를 유지하는 것이 좋습니다. 이를 통해 이미지의 재현성과 일관성을 유지하며, 이미지 크기를 최적화하고 변경 사항 추적 및 수정을 용이하게 할 수 있습니다.
docker push 레지스트리주소/vim-ubuntu:1.0
- docker push
: 로컬 환경에서 작성한 도커 이미지를 Docker Hub 또는 다른 도커 레지스트리에 업로드하는 데 사용된다.
이전에 생성한 도커 repository에 정상적으로 올라간 것을 확인할 수 있다.
docker pull
- docker pull 명령어를 통해 repository로부터 이미지를 가져와 실행시킬 수 있다.
'Docker' 카테고리의 다른 글
docker file - Entrypoint & Work (0) | 2023.06.23 |
---|---|
docker file - 기본 (0) | 2023.06.23 |
docker volumn 옵션으로 폴더 연결하기 (0) | 2023.06.09 |
docker exec 명령어 변경 (0) | 2023.05.29 |
docker dit 옵션과 attach (0) | 2023.05.29 |