[Docker] E: Problem executing scripts APT::Update::Post-Invoke 도커 이미지를 빌드 시 apt update 명령어에서 다음과 같은 오류가 발생했다.Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true' 확인해보니 도커엔진의 버전이 낮아서 발생하는 오류라고 한다.해당 버전은 10.20.8 버전이였고, 10.20.12 버전으로 업그레이드 해서 진행하니 이미지가 잘 빌드됐다. 업그레이드는 다음과 같이 진행했다. 현재 버전 확인dpkg -li..
[Docker] 도커 명령어 권한 설정하기 도커 설치 후 docker 명령어를 sudo 권한에서만 사용이 가능할 때가 있다.docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied. 일반 유저 (ex. ubuntu) 가 docker 명령어를 사용하게 하고 싶다면, docker 그룹에 일반 유저를 추가해주면 된다.sudo usermod -aG ..
[Docker] Docker 이미지 빌드를 위한 Makefile 활용 방법 도커 이미지를 빌드 할 때 Makefile을 사용하면 자동화된 빌드 프로세스를 구성할 수 있다. 이를 통해 반복적인 작업을 간소화하고 일관성 있는 빌드를 유지할 수 있다. Makefile 작성하기 Makefile은 빌드 프로세스를 정의하고 관리하는데 사용된다. IMAGE_NAME := my-docker-image IMAGE_TAG := latest build: docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . run docker run -it ${IMAGE_NAME}:${IMAGE_TAG} clean docker rmi ${IMAGE_NAME}:${IMAGE_TAG} build : 도커 이미지를 빌드..
[Docker] ubuntu 22.04 docker 설치 https://docs.docker.com/engine/install/ubuntu/ Install Docker Engine on Ubuntu Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install. docs.docker.com 자세한 설치 방법은 공식 문서에서 확인 Ubuntu 패키지 설치 sudo apt update -y sudo apt-get install apt-transport-https \ ca-certificates curl gnupg-age..
[Docker] 도커 네트워크 도커 컨테이너 및 서비스는 도커 네트워크를 통해 격리된 컨테이너 간의 네트워크 연결뿐만 아니라 도커 외의 다른 애플리케이션 워크로드와도 연결이 가능하다. 이때 도커 네트워크의 하위 시스템 연결을 위해 도커 네트워크 드라이버를 사용하면 상호 간 통신이 가능하다. 1. 도커 네트워크 인터페이스 Networking overview docs.docker.com 위 docs의 네트워크 정의는 다음과 같다. 도커 설치 시 기본적으로 제공되는 docker0은 소프트웨어적으로 구현된 가상 이더넷 브릿지 네트워크고, 이것을 통해 격리된 컨테이너들의 상호 간 통신을 제공한다. 별도의 브릿지 네트워크를 생성하여 연결값으로 설정하지 않는 한 실행되는 모든 컨테이너는 docker0 브릿지에 연결되..
[Docker] 컨테이너 리소스 도커 컨테이너를 생성할 때, 리소스 제한이 가능하다. CPU, Memory 등의 리소스를 제한하는 방법을 알아보자 테스트용으로 컨테이너를 하나 띄워놓고 진행을 해보자 docker run --name nginx -d nginx:latest 컨테이너의 리소스는 cgroup의 리소스를 이용해서 할당한다. 💡cgroups (control groups) 프로세스들의 자원의 사용 (CPU, 메모리, 입출력, 네트워크 등)을 제한하고 격리시키는리눅스 커널 기능 단일 또는 태스크 단위의 프로세스 그룹에 대한 자원 할당을 제어한다. Memory 1. 메모리 할당 먼저 메모리의 limit을 확인해보자 docker stats nginx 아무런 설정을 하지 않고, 컨테이너를 생성했을 시 메모리..
[Docker] 도커 스토리지 볼륨 마운트 도커 볼륨 마운트를 사용하면 호스트의 폴더나 파일을 컨테이너에 연결할 수 있기 때문에, 컨테이너 내부에서 생성되는 데이터를 호스트의 파일 시스템에 저장할 수 있음 컨테이너가 종료되더라도 데이터를 유지할 수 있기 때문에, 데이터 지속성이 보장됨 사용법 my-nginx라는 컨테이너를 실행시키면서 컨테이너의 /usr/share/nginx/html 이라는 경로와 /home/test_mount 라는 경로가 mount 됨 docker run -d --name my-nginx -v /home/test_mount:/usr/share/nginx/html nginx ⚠ 이미 실행 중인 컨테이너에 volumn을 추가하는 기능은 도커에서 지원하지 않음 이미 실행 중인 컨테이너에 볼륨..
[Docker] 도커 이미지 빌드 (Docker Image Build) 도커 파일 (Dockerfile) : 컨테이너 빌드를 위한 명령어의 집합, 다양한 인스트럭션을 지원하고 대소문자를 구분하지 않음 ❗ 베이스 이미지는 필수 FROM 컨테이너의 베이스 이미지 (OS) LABEL 컨테이너 빌더의 정보, 버전과 같은 부가정보 제공 RUN 컨테이너 빌드를 위해 base image에서 실행 할 Command ADD 컨테이너 빌드 시 호스트의 파일을(tar, url 포함) 컨테이너로 푸시 COPY 컨테이너 빌드 시 호스트의 파일을 컨테이너로 복사 WORKDIR 컨테이너 빌드 시 명령이 실행될 작업 디렉토리 설정 ENV 환경 변수 지정 USER 명령 및 컨테이너 실행 시 적용할 유저 설정 EXPOSE 컨테이너 동작..