본문 바로가기

docker

(46)
Docker 네트워크 이해하기: 컨테이너에서 호스트 포트에 접근하는 법 Docker 네트워크 이해하기: 컨테이너에서 호스트 포트에 접근하는 법Docker 컨테이너와 호스트 머신 간의 네트워크 통신은 많은 개발자들이 자주 직면하는 과제입니다. 특히 컨테이너 내에서 호스트 머신의 특정 포트에 접근해야 할 때 명확한 이해가 필요합니다. 이 글에서는 Docker 컨테이너에서 호스트 포트에 접근하는 방법을 단계별로 설명하고, 자주 발생하는 문제와 해결책을 공유합니다.1. Docker 컨테이너와 호스트의 네트워크 이해하기Docker 컨테이너는 기본적으로 호스트와는 분리된 네트워크 공간에서 실행됩니다. Docker는 기본적으로 bridge라는 네트워크 드라이버를 사용하여 컨테이너들을 호스트 네트워크와 연결합니다. 컨테이너에서 호스트의 네트워크에 접근하기 위해 다양한 방법이 존재하며, 각..
Docker 컨테이너에서 크론 작업(cronJob) 실행하기: 설정 및 예제 가이드 크론 작업을 Docker 컨테이너 안에서 실행하는 방법은 개발 및 운영 환경에서 자주 다루어지는 문제 중 하나입니다. 이 글에서는 Docker 컨테이너 내부에서 크론 작업(cron jobs)을 설정하고 실행하는 방법을 단계별로 알아보겠습니다.Docker 컨테이너 내부에서 크론 작업 실행하기1. 크론 작업이란?크론(cron)은 유닉스 계열 운영 체제에서 시간 기반의 작업 스케줄링을 위해 사용되는 시스템 도구입니다. 이를 통해 정기적으로 실행되어야 하는 작업을 자동화할 수 있습니다.2. 기본 Docker 이미지에 크론 설치하기Docker 컨테이너 내에서 크론 작업을 실행하기 위해서는 컨테이너에 크론 데몬(cron daemon)이 설치되어 있어야 합니다. 일반적으로 Linux 기반 컨테이너에서 크론을 설정할 ..
Docker 컨테이너 최적화를 위한 빌드 컨텍스트 외부 파일 포함 방법 Docker 컨테이너 최적화를 위한 빌드 컨텍스트 외부 파일 포함 방법Docker로 애플리케이션을 컨테이너화할 때, 우리는 종종 프로젝트 루트 경로 외부에 있는 특정 파일이나 디렉토리를 Docker 이미지에 포함해야 하는 상황을 맞이합니다.예를 들어, 보안 자격 증명 파일이나 공용 설정 파일을 사용하고자 할 때 이러한 필요가 발생할 수 있습니다. Docker의 빌드 컨텍스트에 이러한 외부 파일을 포함하는 것은 몇 가지 제한이 있지만, 이를 해결하기 위한 몇 가지 전략이 존재합니다.1. Docker 빌드 컨텍스트란?Docker 빌드 컨텍스트는 docker build 명령어가 실행되는 디렉토리와 그 하위 파일 및 디렉토리의 집합을 말합니다. Docker가 이미지를 빌드할 때, 빌드 컨텍스트 외부에 있는 파일..
[Docker] 오류 해결: 'The input device is not a TTY' 문제 원인과 해결 방법 Docker를 사용할 때 "The input device is not a TTY"라는 오류 메시지가 나타나는 경우가 있습니다. 이 오류는 주로 Docker 컨테이너와 상호작용할 때 발생하며, 특히 CI/CD 파이프라인이나 스크립트에서 Docker 명령을 실행할 때 자주 발생합니다. 오류의 원인 TTY(Teletype)는 전통적으로 텍스트를 입력하고 출력하는 장치를 가리키는 용어입니다. 현대 컴퓨팅에서는 터미널 또는 명령줄 인터페이스를 의미합니다. Docker에서 이 오류 메시지는 Docker 명령이 TTY 또는 인터랙티브 쉘에 연결되어 있지 않을 때 발생합니다. 스크립트 실행 중: 배치 스크립트 또는 CI/CD 파이프라인에서 docker run 또는 docker exec 명령을 실행할 때 이 오류가 발생..
[Docker] Docker 이미지 정리하기: 불필요한 이미지 제거하는 완벽 가이드 Docker 이미지 관리는 시스템의 성능과 공간 효율성을 유지하기 위해 중요합니다. 오래되거나 사용하지 않는 이미지를 제거하는 것은 디스크 공간을 확보하고, 관리를 용이하게 하며, 보안을 강화할 수 있습니다. 이 글에서는 Docker 이미지를 효과적으로 정리하는 방법에 대해 설명합니다. Docker 이미지 제거의 기본 Docker에서 이미지를 제거하는 가장 기본적인 명령어는 docker image rm 입니다. 이 명령어는 하나 이상의 이미지를 제거하는 데 사용됩니다. docker image rm [OPTIONS] IMAGE [IMAGE...] 옵션으로는 -f 또는 --force를 사용하여 이미지의 강제 삭제를 할 수 있고, --no-prune 옵션을 사용하여 태그되지 않은 부모 이미지를 삭제하지 않도록..
[Docker] 도커(Docker)에서 한 번에 모든 이미지 삭제하는 방법 도커(Docker)를 사용하면서 로컬에 쌓인 이미지들을 일괄적으로 삭제할 필요가 있을 때가 있습니다. 특히, 디스크 공간을 확보하거나 정리를 하기 위한 작업을 필요로 합니다. 이 글에서는 도커에서 모든 로컬 이미지를 삭제하는 방법에 대해 알아보겠습니다. 도커 이미지 삭제 기본 도커에서 이미지를 삭제하는 기본 명령어는 docker rmi입니다. 이 명령어는 하나 또는 여러 개의 이미지를 호스트 노드에서 삭제합니다. 이미지가 여러 태그를 가지고 있다면, 해당 태그만 제거하고, 태그가 이미지에 대한 유일한 참조일 경우 이미지와 태그 모두 삭제됩니다. 예시: 특정 이미지 삭제 docker rmi 모든 이미지 일괄 삭제 모든 로컬 도커 이미지를 삭제하려면, 아래의 명령어를 사용할 수 있습니다. 이 명령어는 로컬에..
[Docker] 볼륨 추가 시 필요 없는 특정 폴더 쉽게 제외하기 (.dockerignore) 도커(Docker)는 애플리케이션을 컨테이너화하여 개발 및 배포를 간편하게 해주는 툴입니다. 때때로, 우리는 특정 볼륨을 도커 컨테이너에 추가하고 싶지만 그 안의 일부 서브 폴더는 제외하고 싶을 수 있습니다. 이 글에서는 도커에 볼륨을 추가하면서 특정 서브 폴더를 제외하는 방법에 대해 알아보겠습니다. 1. 볼륨 추가의 기본 먼저, 도커에 볼륨을 추가하는 기본적인 방법부터 이해해야 합니다. 볼륨은 컨테이너의 데이터를 보존하고, 컨테이너 사이에 데이터를 공유하는 데 사용됩니다. 도커 볼륨을 추가하는 가장 간단한 방법은 docker run 명령어에 -v 또는 --volume 옵션을 사용하는 것입니다. 예를 들어, 로컬의 /mydata 폴더를 컨테이너의 /data 폴더에 마운트하는 경우 아래와 같이 명령을 실행..
[Docker] Dockerfile에서 RUN과 CMD의 차이점 Docker는 컨테이너화된 어플리케이션을 생성하고 관리하는 데 사용되는 도구입니다. 이 과정에서 Dockerfile이라는 텍스트 문서를 사용하여 컨테이너의 설정과 명령을 정의합니다. Dockerfile 내에서 주로 사용되는 두 가지 지시어는 RUN과 CMD 입니다. 이 두 지시어의 기능과 사용 방법을 이해하는 것은 Docker 이미지를 효과적으로 구축하는 데 매우 중요합니다. RUN 지시어 RUN 지시어는 Docker 이미지가 빌드될 때 실행되는 명령어입니다. 이 지시어는 이미지 내에서 소프트웨어 패키지를 설치하거나 설정을 변경하는 데 주로 사용됩니다. RUN 명령은 새로운 레이어를 생성하고, 해당 레이어 위에 변경사항을 적용합니다. 예시: # Ubuntu 기반 이미지에서 Apache를 설치 FROM u..
[Docker] Dockerfile의 COPY와 ADD 명령어 비교: 언제 어떤 명령어를 사용해야 할까? Docker 이미지를 구축할 때 Dockerfile의 COPY와 ADD 명령어는 파일과 디렉토리를 이미지로 복사하는 데 사용됩니다. 이 글에서는 이 두 명령어의 차이점과 각각의 사용 사례를 살펴보겠습니다.>공식문서COPY 명령어COPY 명령어는 Docker 호스트의 파일이나 디렉토리를 Docker 이미지로 복사하는 데 사용됩니다. 이 명령어는 로컬 파일 시스템에서만 작동하며, URL이나 다른 원격 소스에서 직접 파일을 복사할 수는 없습니다.COPY 사용 예시# DockerfileCOPY ./local_directory /container_directory이 예시에서 local_directory는 호스트 시스템의 디렉토리이며, /container_directory는 대상 이미지 내의 디렉토리입니다.ADD ..
[Docker] Docker 컨테이너에서 호스트 머신의 로컬호스트에 접속하는 방법 (host.docker.internal) Docker를 사용하는 많은 개발자들이 직면하는 일반적인 문제 중 하나는 컨테이너 내부에서 호스트 머신의 로컬호스트에 어떻게 접근하는지에 관한 것입니다. 이 글에서는 Docker 컨테이너 내부에서 호스트 시스템의 로컬호스트에 연결하는 방법을 설명하겠습니다. Docker 네트워크 이해 Docker 컨테이너는 기본적으로 격리된 환경을 제공합니다. 이 때문에 컨테이너는 자체적인 로컬호스트를 가지고, 이는 호스트 머신의 로컬호스트와는 다릅니다. 따라서, 컨테이너 내부에서 localhost 또는 127.0.0.1을 사용하여 호스트 머신의 서비스에 접근하려고 하면 연결되지 않습니다. 호스트 머신에 접근하기 Docker의 특수 DNS 이름 사용 Docker 18.03 버전 이후부터는 host.docker.intern..