목록전체 글 (45)
ㅇ.ㅇ
Docker 임시 파일 및 빌드 캐시 안전하게 정리하는 방법Docker에서 작업을 지속하면서 tmp 파일이나 빌드 캐시가 쌓여 용량을 차지하거나 비정상적인 데이터를 포함할 수 있다. 우선 나 같은 경우에는 tmp쪽에 용량이 없다는 에러 메시지가 나와서 용량이 큰 이미지를 pull 받을 수 없었다. 그럼 이러한 파일들을 정리하고, 시스템 공간을 확보하는 방법을 알아보자. 1. 사용하지 않는 컨테이너, 네트워크, 볼륨, 이미지 정리아래 명령어는 모든 불필요한 리소스를 삭제할 수 있다.-- (1) 사용하지 않는 컨테이너 정리docker container prune-- 중지된 상태의 모든 컨테이너를 삭제 -- (2) 사용하지 않는 네트워크 정리docker network prune-- 사용되지 않는 모든 네트워크..
개발 작업을 하다 보면, Docker 컨테이너에서 로그 파일이나 설정 파일을 추출해야 할 때가 있다. 그럼 그 내부 파일들을 호스트로 꺼내오는 방법은 무엇일까? 1. 컨테이너 셸에 접근먼저 컨테이너의 셸에 접근하려면, docker exec 명령어를 사용해야 한다. docker exec 명령어는 실행 중인 컨테이너 내에서 새로운 명령을 실행할 수 있다. 예를 들어, Bash 셸에 접근하고자 할 때는 다음과 같은 명령어를 사용한다.docker exec -it [컨테이너ID 또는 이름] /bin/bash 2. 컨테이너 내부에서 파일 전송 컨테이너 내부에서 파일을 호스트로 전송하거나, 호스트에서 컨테이너로 파일을 전송하려면 docker cp 명령어를 사용할 수 있다. 호스트와 컨테이너 간 파일을 복사하려면 다음..
상황docker-compose.yml 파일에 postgres:13 이미지를 추가하고 컨테이너 구동 했으나, 다음과 같은 에러가 발생. 에러Postgres container failing with initdb error: program "postgres" is needed by initdb but was not found. 원인위 에러는 postgres:13 이미지가 Docker 19 버전과의 호환성 문제로 인해 발생하는 것으로 보임. postgres:13 이미지가 최신 운영 체제와 패키지 호환성을 위해 업데이트된 환경을 사용하면서, Docker의 특정 버전에서는 필요한 패키지나 파일 경로가 다르거나 누락되어 이 문제가 발생할 수 있음. 해결 과정 이미지 버전을 postgres:13에서 postgres..
상황Docker 버전 19.x를 사용하는 CentOS 서버에서 특정 tomcat 공식 이미지를 컨테이너로 구동하였을 시 해당 에러 발생 에러Tomcat 9 running on docker - Cannot find /usr/local/tomcat/bin/setclasspath.sh 원인이 에러는 Docker 19의 오래된 libseccomp 버전이 최신 Tomcat 이미지에서 사용하는 시스템 호출을 인식하지 못해 발생하는 호환성 문제이다. 최신 Tomcat 이미지는 최신 Linux 커널과 libseccomp 버전에서 제공하는 새로운 시스템 호출을 사용하지만, Docker 19 버전에서는 이를 지원하지 못해 필요한 파일(/usr/local/tomcat/bin/setclasspath.sh)을 찾지 못하는 문제..
상황해당 에러 발생 전에 꺼져있던 방화벽을 켰는데, 그 이후로 Docker 컨테이너 실행 할 때 아래의 에러 발생. 에러Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-eb84ca430943 -j RETURN: iptables: No chain/target/match by that name. 원인 방화벽 서비스(firewalld)가 활성화되거나 재시작될 때 iptables 규칙을 재정의하면서 기존 Docker 관련 체인(DOCKER 체인)이 삭제될 수 있다. Docker는 네트워크 트래픽 관리를 위해 iptables의 고유 체인을 사용하므로, 방..
Docker 컨테이너 관리 명령어docker ps -a : 현재 시스템에 있는 모든 컨테이너의 목록을 표시docker ps : 현재 시스템에 있는 실행중인 컨테이너의 목록을 표시docker stop [id/name] : 지정된 컨테이너를 중지docker start [id/name] : 지정된 컨테이너 시작docker restart [id/name] : 지정된 컨테이너를 중지하고 다시 시작docker logs [id] : 지정된 컨테이너의 로그를 표시docker logs -f [id] : 실시간 로그 확인docker inspect [id] : 특정 컨테이너의 상세 정보 확인docker rm -f [id] : 특정 컨테이너 제거-f : 실행중인 컨테이너 먼저 정지 시킨 후 제거docker exec -it [..
1. 이미지명 규칙레지스트리주소/프로젝트명/이미지명:이미지태그레지스트리 주소어떤 레지스트리 사용할지 결정도커 허브말고도 다른 종류의 레지스트리를 사용할 수 있으니까비워져있을 때는 기본 레지스트리인 docker.io (도커허브) 주소가 기본값이 된다.프로젝트명비워져있을 때는 도커가 검증한 오피셜 이미지들이 속해있는 library가 기본값이 된다.그러므로 프로젝트명을 따로 지정하지 않으면 공식 이미지를 다운받게 된다.이미지태그이미지 버전을 뜻함숫자와 영문 모두 사용 가능비워져있을 때는 최신버전을 의미하는 latest가 기본값이 된다. 2. 이미지 종류Docker OFFICIAL IMAGE도커 오피셜 인증 이미지VERIFIED PUBLISHER도커 직접 관리는 아니지만 영향력있는 회사에서 자체적으로 인증한 이..
Q. 도커 이미지를 war 파일처럼 파일 전송 같은 형식으로 전송이 가능할까?A. 직접적으로 파일 전송 방식으로 Docker 이미지를 다른 시스템으로 전송하는 것은 기본적으로 지원되지 않는다. 그러나, Docker 이미지를 저장하고 전송할 수 있는 방법은 있다. 명령어를 사용하여 이미지를 TAR 아카이브 파일로 저장할 수 있고, 이 파일을 다른 시스템으로 전송한 후 명령어를 통해 도커 이미지로 다시 로드할 수 있다!도커 이미지 tar 파일 변환즉, 위 방법을 사용하면 Docker 이미지를 TAR 아카이브 파일로 저장하여, 이메일, USB 드라이브, 클라우드 스토리지 등을 통해 다른 컴퓨터로 전송하여 사용할 수 있다. 이러한 방법은 인터넷 연결 없이도 Docker 이미지를 공유할 수 있는 효과적인 방법으로..