본문 바로가기

docker

(46)
[Docker] Docker 호스트에서 컨테이너 IP 주소 찾는 쉬운 방법 Docker 컨테이너의 IP 주소 확인하기 Docker는 개발 및 배포 과정을 간소화하는 데 널리 사용되는 컨테이너화 도구입니다. 때때로, 호스트 시스템에서 실행 중인 Docker 컨테이너의 IP 주소를 확인해야 할 필요가 있습니다. 이 글에서는 Docker 컨테이너의 IP 주소를 호스트에서 어떻게 확인하는지 단계별로 설명하겠습니다. Docker 컨테이너 IP 주소 확인 방법 1. Docker 컨테이너 실행 확인 먼저, 실행 중인 Docker 컨테이너가 있는지 확인해야 합니다. 이를 위해 다음 명령어를 사용할 수 있습니다: docker ps 이 명령어는 실행 중인 모든 컨테이너의 목록을 보여줍니다. 2. 컨테이너의 세부 정보 확인 컨테이너의 IP 주소를 얻기 위해서는 컨테이너의 세부 정보를 조회해야 합니..
[Docker] Docker 사용 중 "권한 거부" 문제 해결하기: 단계별 가이드(Got permission denied 에러 해결) Docker 사용 중 "권한 거부" 문제 해결하기: 단계별 가이드 Docker를 사용하다 보면, docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock라는 오류 메시지를 마주할 수 있습니다. 이는 Docker 데몬에 대한 접근 권한이 없을 때 발생하는 일반적인 문제입니다. 이 글에서는 이 문제를 해결하는 방법을 단계별로 살펴보겠습니다. 문제 이해하기 Docker 데몬은 기본적으로 root 사용자 또는 docker 그룹의 멤버만이 접근할 수 있습니다. 따라서, 일반 사용자가 Docker 명령을 실행하려고 할 때 접근 권한 오류가 발생할 수 있습니다. 해결책 1:..
[Docker] Docker 컨테이너 내에서 cron job 실행하는 방법 Docker 컨테이너 내에서 cron job 실행하는 방법 이 글에서는 Docker 컨테이너 내에서 cron job을 실행하는 방법에 대해 알아보겠습니다. 방법 Docker 컨테이너 내에서 cron job을 실행하는 방법은 크게 두 가지로 나뉩니다. 1. Dockerfile에서 cron 설정하기 Dockerfile에 cron 설정을 추가하여 이미지를 빌드하는 방법입니다. 이 방법은 이미지를 빌드할 때 cron job을 설정하여, 컨테이너가 시작될 때 cron이 실행되도록 할 수 있습니다. 다음은 Dockerfile에서 cron 설정 예시입니다. 1 2 3 4 5 FROM ubuntu RUN apt-get update && apt-get install -y cron COPY cronfile /etc/cro..
[Docker] Docker 빌드 컨텍스트 외부 파일 포함 방법 Docker 빌드 컨텍스트 외부 파일 포함 방법 Docker 빌드 컨텍스트란? Docker는 컨테이너 기반 가상화 기술을 사용하는 소프트웨어입니다. Docker를 사용하면 이미지를 만들고 이를 기반으로 컨테이너를 실행할 수 있습니다. Docker 이미지는 Dockerfile이라는 파일에 정의된 내용에 따라 빌드됩니다. Dockerfile은 Docker 이미지를 빌드하기 위한 스크립트 파일입니다. 이 파일 안에는 Docker 이미지를 빌드하는 데 필요한 모든 명령어와 파일이 포함되어 있습니다. Dockerfile을 빌드할 때, Docker는 현재 디렉토리를 빌드 컨텍스트로 사용합니다. 빌드 컨텍스트란 Dockerfile을 빌드하기 위해 필요한 파일들이 위치한 디렉토리를 의미합니다. 하지만 때로는 Docke..
[Docker] 이미지를 깨끗하게 재빌드하는 방법 도커 이미지를 깨끗하게 재빌드하려면 다음과 같은 단계를 따르면 됩니다. 1. 컨테이너 및 이미지 삭제 우선 해당 이미지를 사용하는 모든 컨테이너를 중지하고 삭제해야합니다. 이는 다음 명령을 통해 수행할 수 있습니다. docker stop [container_name] docker rm [container_name] 이미지를 직접 삭제하려면 다음과 같이 입력합니다. docker rmi [image_name] 2. 캐시된 빌드 삭제 이전 빌드에서 캐시가 사용될 가능성이 있으므로 빌드 캐시를 삭제해야합니다. 다음 명령을 사용하여 모든 캐시를 삭제할 수 있습니다. docker builder prune 3. 새로운 이미지 빌드 모든 이전 이미지 및 캐시가 제거되었으므로 새 이미지를 빌드할 수 있습니다. 다음 명령..
[Docker] Docker Buildx를 통한 Multi-architecture 이미지 빌드(x86, ARM) 최근 ARM 기반 프로세서(AWS Graviton, Apple M1 등) 사용이 증가로 인하여 Multi-architecture 빌드가 중요해지고 있습니다. (특히 Apple M1 칩의 등장으로 ARM 기반 프로세서에서 동작하는 프로그램을 개발하는 엔지니어가 증가할 것이라 예측됩니다..) 기존의 서버는 보통 x86 또는 AMD CPU를 사용하여 실행하였고, 동일한 환경에서 개발된 프로그램이라면 배포하는 것에는 아무 문제가 없습니다. 하지만 ARM 환경에서 개발된 프로그램을 AMD 환경에 배포하거나, AMD 환경에서 개발된 프로그램을 ARM 환경에 배포한다면 문제가 생길 수 있습니다. Docker buildx를 이용하여 Multi-architecture에 배포할 수 있는 컨테이너 이미지를 빌드하는 방법에 ..
[Docker] Docker-Compose 주요 명령어 총정리 docker-compose 1.29.2, docker 20.10.8 버전에서 실행하였으며, 본문 내용이 길어 원하는 부분만 검색하여 보시는 걸 추천드립니다. Docker Compose의 주요 서브 명령어 서브명령 설명 up 컨테이너 생성/시작 ps 컨테이너 목록 표시 logs 컨테이너 로그 출력 run 컨테이너 실행 start 컨테이너 시작 stop 컨테이너 정지 restart 컨테이너 재시작 pause 컨테이너 일시 정지 unpause 컨테이너 재개 port 공개 포트 표시 config 구성 확인 kill 실행 중인 컨테이너 강제 정지 rm 컨테이너 삭제 down 리소스 삭제 docker-compose 명령은 docker-compose.yml을 저장한 디렉토리에서 실행됩니다. 만약 커런트 디렉토리 이외..
[Docker] Docker Compose links(컨테이너 간 연결) 컨테이너 간 연결(links) 다른 컨테이너에 대한 링크 기능을 사용하여 연결하고 싶을 때는 links 를 사용하여 연결한 컨테이너명을 설정합니다. links: - logserver - logserver:log01 logserver라는 이름의 컨테이너와 링크시키고 싶을 때는 다음과 같이 지정합니다. links: - logserver 컨테이너명과는 별도로 앨리어스명을 붙이고 싶을 때는 '서비스명:앨리어스명'으로 지정합니다. links: - logserver:log01 또한 서비스 간의 의존관계는 depends_on 을 사용하여 지정할 수 있습니다. depends_on 은 서비스를 시작하는 순서도 지정할 수 있습니다.
[Docker] Docker Compose build docker-compose.yml 작성 시 이미지의 작성을 Dockerfile에 기술하고 그것을 자동으로 빌드하여 베이스 이미지로 지정할때는 build를 지정합니다. build에는 Dockerfile의 파일 경로를 지정합니다. 예시 다음과 같이 sample 디렉토리 안에 docker-compose.yml과 Dockerfile을 배치합니다. sample ├── Dockerfile └── docker-compose.yml docker-compose.yml의 build에는 현재 디렉토리의 Dockerfile의 위치를 지정합니다. # docker-compose.yml services: webserver: build: . # 현재 디렉토리 Dockerfile은 다음과 같이 작성합니다. FROM ubuntu 다음 ..
[Docker] docker-compose.yml의 개요 docker-compose.yml의 개요 Docker Compose는 'docker-compose.yml'이라는 Compose 정의 파일에 시스템 안에서 가동하는 여러 서버들의 구성을 모아서 정의합니다. 이 정의 파일은 YAML 형식으로 기술합니다. YAML YAML은 구조화된 데이터를 표현하기 위한 데이터 포맷으로 Python과 동일하게 들여쓰기로 데이터의 계층 구조를 나타냄. 들여쓰기는 탭이 아니라 스페이스를 사용함. 읽기가 쉬워 설정 파일 등에 많이 이용됨 YAML에서는 데이터의 맨 앞에 '-'를 붙이면 배열을 나타냄. '-' Compose 정의 파일에는 여러 컨테이너의 설정 내용을 모아서 하나의 파일에 기술합니다. 이 Compose 정의 파일에는 관리하고 싶은 컨테이너의 서비스(services:)..