Container/Docker 4

도커 리소스 사용량 제한

도커는 리눅스 커널이 기본으로 제공하는 기본 cgroup 기술을 이용해 애플리케이션이 좀 더 적은 리소스를 사용하게 할 수 있다. 쿠버네티스도 이러한 기능을 활용해 각 파드에서 사용하는 리소스의 양을 제한할 수 있다. 메모리 리소스 제한 컨테이너 내에서 애플리케이션을 실행할 경우 얻을 수 있는 주요 이점 중 하나는 바로 리소스 사용률을 제한할 수 있다는 것이다. 따라서 여러 애플리케이션이 동일한 하드웨어에 공존할 수 있으며 공정한 사용을 보장해준다. 200MB의 메모리와 1GB의 스왑 공간으로 제한하려면 docker run 명령어와 함께 --memory 및 --memory-swap 플래그를 사용할 수 있다. docker run -d --name mycontainer --publish 8080:8080 \..

Container/Docker 2023.10.25

모든 docker 이미지 지우기

Docker로 처음 작업을 하다보면 불필요한 이미지들을 다운받거나 도커 이미지를 잘못 굽는 등의 이슈가 자주 발생하게 된다. 이러한 이미지들이 쌓이다보면 어느 순간 이미지 리스트가 사용하지 않는 이미지들로 가득차게 된다. 이러한 경우에 쉽게 불필요한 도커 이미지들을 지우는 기능으로 prune이 있다. # 사용 중이지 않은 모든 도커 이미지 삭제 $ docker image prune 추가로, prune을 사용해서 exit된 모든 컨테이너들을 지울 수도 있고, 이미지와 컨테이너 모두를 정리할 수도 있다. # 종료된 모든 컨테이너 삭제 docker container prune # 종료된 모든 컨테이너들과 사용되지 않고 있는 이미지들 삭제 docker system prune 마지막으로, 도커 엔진 내의 모든 이..

Container/Docker 2023.10.09

에러 해결법: ImportError: libGL.so.1: cannot open shared object file: No such file or directory

Ubuntu 도커 이미지 상에서 혹은 EC2 ubuntu나 ECS 등에서 opencv-python를 설치한 뒤 cv2를 import하려고 할 때 다음과 같은 에러 메세지를 마주할 수 있다. ImportError: libGL.so.1: cannot open shared object file: No such file or directory 이러한 에러가 나는 가장 큰 이유는 cv2의 dependency 라이브러리 파일들 중 일부가 설치가 안 되어 있어서 생기는 에러이다. 보통 우분투를 로컬 머신에 설치하면 거의 일어나지 않는 경우이나, Docker 이미지나 EC2 프리티어 버전 등에서는 이러한 에러가 잘 발생한다. 우선, 일반적으로 가장 잘 알려진 해결법으로는 "libgl1-mesa-glx" 패키지를 설치하..

Container/Docker 2023.10.09

Docker attach와 exec의 차이

docker attach attach는 실행되고 있는 컨테이너에 접속하는 명령어이다. 사용법은 다음과 같다. docker attach 간단하게 말하자면, attach를 사용하게 되면 로컬 머신의 stdin, stdout, stderr 스트림들이 해당 컨테이너와 연결되게 된다. 즉, 표준 입출력을 연결시켜서 컨테이너 내부의 제어가 가능하도록 해주는 기능이라고 할 수 있다. attach로 컨테이너를 접속한다면 처음 도커 컨테이너를 run하였을 때의 환경이 포그라운드로 보여지게 된다. 따라서, 만약 도커 컨테이너를 run할 시 /bin/bash로 들어간 것이 아니라면 attach를 활용해서는 들어갈 수 없다. 참고로 container의 pid 1은 리눅스에 의해 특별하게 관리되고 있어서 기본 액션 시그널을 무..

Container/Docker 2023.10.09