도커 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
도커(docker)의 기타 명령
도커(docker)의 기타 명령을 알아보고자 한다.
docker history
해당 명령은 docker image의 히스토리(history)를 확인하는 명령이다.
이처럼 "docker history 이미지명"의 명령을 사용하면, 해당 image의 히스토리를 볼 수 있다.
즉, 해당 이미지는 FROM, LABEL, RUN, ENTRYPOINT 등의 명령에 따라 layer(층) 형태로 생성된 것을 확인할 수 있다.
docker cp
해당 명령은 docker container에서 특정 파일을 호스트 PC로 가져오는 명령이다.
또한, 반대로 호스트 PC에서 docker container로 특정 파일을 넣을 수도 있다.
*예제
# docker container -> 호스트 PC
# 호스트 PC -> docker container
docker commit
해당 명령은 docker container에서 작업하여 변경된 사항을 새로운 image 파일에 저장하여 해당 이미지 파일을 생성할 수 있는 명령이다.
*예제
해당 docker container는 vim가 설치되지 않아서 vi 명령을 해당 컨테이너에서 사용하지 못하는 상황이다.
따라서 해당 컨테이너에서 vi 명령을 사용하고자 "apt-get install vim" 명령으로 vi를 설치했다. (해당 컨테이너의 변경사항)
다시 "vi 000-default.conf" 명령을 사용하면, 이제는 해당 파일(000-default.conf)에 vi를 사용할 수 있다.
(해당 컨테이너에 vi를 설치했기 때문 : 작업 변경사항)
vi를 사용하여, 해당 파일의 일부분을 수정한 결과이다.
여기서 만약 해당 컨테이너를 삭제한 후, 기존의 image를 가지고 다시 컨테이너를 만들면 앞서 설치했던 vi(컨테이너 작업 변경사항)는 새로운 컨테이너에 존재하지 않는다. 따라서 이러한 문제를 해결하기 위해서는 docker commit 명령을 사용하면 된다.
즉, docker commit 명령을 사용하면 앞서 컨테이너에서 작업했던 변경사항을 포함하는 새로운 image를 만들 수 있다.
"docker commit" 명령을 사용하여, 기존의 docker container(mywebserver)에서 작업했던 변경사항(vi 설치작업)을 viweb이라는 새로운 image에 저장하여 해당 이미지를 생성한다.
그리고 기존에 작업했던 docker container를 중지하고 삭제한다.
앞서 생성한 새로운 "viweb" image로 "mywebserver"라는 새로운 docker container를 다시 한 번 생성한다.
이렇게 생성한 docker container에서는 vi라는 프로그램을 설치하지 않아도 사용할 수 있다.
그 이유는 이전의 컨테이너에서 작업했던 변경사항이 새로운 viweb 이미지에 저장되어, 해당 컨테이너에서도 적용되기 때문이다.
docker diff
해당 명령은 기존의 docker image와 비교해서 해당 docker container에서 수정된 부분을 순서에 상관없이 출력해주는 명령이다.
만약, 특정 컨테이너에서 어떤 파일을 추가한 후 수정하고 마지막으로 삭제했다면 "docker diff" 명령은 어떠한 것도 출력하지 않는다. 그 이유는 기존의 image와 비교했을 때 결국 수정된 부분이 존재하지 않기 때문이다.
*참고
- A : 파일 또는 디렉토리 추가
- D : 파일 또는 디렉토리 삭제
- C : 파일 또는 디렉토리 수정
*예제
해당 결과가 변경된 이유는 "mywebserver"라는 컨테이너 안에 test.txt 파일을 새롭게 추가했기 때문이다.
즉, docker diff 명령은 기존 이미지와 비교하여 특정 컨테이너의 수정된 부분을 결과 값으로 보여주는 명령이다.
'Docker' 카테고리의 다른 글
Docker - docker compose 기본 사용법 (2) | 2021.12.22 |
---|---|
Docker - 컨테이너와 컨테이너를 연결하기 (0) | 2021.12.19 |
Docker - 도커로 주피터 노트북 서버 만들기 (0) | 2021.12.19 |
Docker - dockerfile 작성을 위한 주요 명령 (0) | 2021.12.16 |
Docker - docker 주요 명령 (0) | 2021.12.14 |
댓글