기본적인 동작 원리는 이해했으니, 이제는 이미지 및 컨테이너를 관리하는 방법을 배울 것입니다. 이미지와 관련된 명령어로는 아래와 같은 것들이 있습니다.
-t
, docker tag
: 이미지에 태그를 추가합니다.docker images
: 도커의 이미지들을 열거합니다.docker image inspect
: 도커의 이미지를 분석합니다.docker rmi
, docker prune
: 도커 이미지를 삭제합니다.컨테이너와 관련된 명령어로는 아래와 같은 것들이 있습니다.
--name
: 이름을 붙일 수 있습니다.--help
: 추가적인 설정 항목들을 살펴봐야 합니다.docker ps
: 도커의 컨테이너들을 열거합니다.docker rm
: 도커 컨테이너를 지웁니다.docker rm <container_name>
을 이용해서 컨테이너를 지울 수 있습니다. 다만, 현재 실행 중인 컨테이는 (당연히) 지울 수 없습니다. 또한, docker rm <name1> <name2> ...
와 같이 복수개를 띄어쓰기(space)로 구분된 채로 열거하여, 한 번에 삭제할 수도 있습니다. 추가적으로 docker container prune
을 이용해서 모든 멈춘(stopped) 컨테이너들을 한 번에 삭제할 수도 있습니다.
docker images
를 이용해서 이미지들을 열거할 수 있습니다. 이때, 이미지들의 사이즈 역시도 확인 가능합니다. 기본적으로는 base 이미지의 크기에 추가적인 종속성과 코드로 인해 커지게 됩니다. 뿐만 아니라 python 혹은 node 이미지의 경우에도 Linux 운영체제 이미지 위에 탑재가 됩니다. 대략적으로 node 이미지는 900MB 정도를 차지하는데, 이에는 node JS 뿐만 아니라 이를 실행하기 위한 툴과 운영체제 이미지가 추가된 크기입니다.
docker rmi
는 이미지를 제거하기 위한 명령어입니다. docker rmi <image_id>
와 같은 방식으로 이미지를 제거할 수 있습니다. 컨테이너를 삭제하는 것과 마찬가지로, 이미지를 삭제하기 위해서는 해당 이미지가 어떠한 컨테이너에서도 사용되어서는 안됩니다. 심지어 컨테이너가 멈췄더라도 해당 이미지를 삭제할 수는 없습니다. 다시 실행하기 위해서는 이미지가 필요하기 때문이죠.
현재 컨테이너에서 사용되지 않는 이미지를 모두 삭제하기 위해서는 docker image prune
을 사용할 수 있습니다.
이미지를 실행하는 docker run
명령어에서 --help
를 이용해 다양한 설정을 볼 수 있는데, 그 중에서 유용한 것은 --rm
플래그입니다. 이는 컨테이너가 종료될 경우 자동으로 해당 컨테이너를 지워줍니다. 이것이 유용한 이유는 일반적으로 도커가 웹 서버와 같은 형태에 사용되는데, 컨테이너를 중단시키는 경우는 서버의 코드가 변경된 경우말고는 거의 없기 때문입니다. 따라서 작동이 중지된 컨테이너를 자동적으로 삭제하게 하는 것은 유용할 때가 많습니다.