시스템 개발 및 관리/DocKer 기본 및 활용 13

GitLab Docker 설정에서 $GITLAB_HOME은 호스트일까? 컨테이너일까?

Docker로 GitLab을 설치할 때 docker-compose.yml 파일 안에서 가장 헷갈리는 부분 중 하나는 바로 volumes 설정입니다.volumes: - '$GITLAB_HOME/config:/etc/gitlab' 이 구문을 보면 "GitLab을 호스트로 보는 건가?", "GitLab이 컨테이너인데 왜 이렇게 연결하지?" 같은 의문이 생길 수 있어요. 이 글에서는 그 구조를 직관적으로 이해할 수 있도록 정리해볼게요. 볼륨(volume)이란?Docker에서 볼륨은 호스트와 컨테이너 사이의 파일 공유 공간입니다.컨테이너가 생성되고 삭제돼도, 데이터는 **호스트의 볼륨에 남기 때문에 영속성(persistence)**을 유지할 수 있어요. $GITLAB_HOME/config:/etc/gitlab ..

GitLab Docker에서 포트 설정이 중요한 이유 – 포트 매핑 완벽 이해하기

GitLab을 Docker Compose로 실행할 때 docker-compose.yml 안에서 반드시 설정해야 하는 부분 중 하나가 바로 ports:입니다. 단순히 컨테이너를 실행한다고 끝나는 것이 아니라, 컨테이너 내부의 서비스를 외부에서 접근 가능하도록 "열어줘야" 하거든요. 포트 매핑(port mapping)이란?컨테이너는 기본적으로 호스트(서버 또는 내 PC)와 분리된 가상 네트워크 안에서 실행됩니다.이 말은 곧, 컨테이너 안에서 GitLab이 80, 443, 22 포트를 사용하고 있어도외부에서는 그 포트에 접근할 수 없다는 뜻이에요.그래서 필요한 게 바로 **포트 매핑(port mapping)**입니다. 포트 매핑 예시ports: - "80:80" - "443:443" - "22:22" ..

환경변수는 파라미터처럼 동작한다 — GITLAB_OMNIBUS_CONFIG 이해하기

Docker로 GitLab을 실행할 때 자주 보게 되는 설정 중 하나가 바로 GITLAB_OMNIBUS_CONFIG입니다.이 환경변수는 마치 함수에 파라미터를 전달하듯,컨테이너 내부 GitLab 인스턴스에 설정 값을 외부에서 넘겨주는 역할을 합니다. 환경변수는 파라미터처럼 동작한다Docker에서 컨테이너를 실행할 때 environment: 항목을 통해 환경변수를 지정할 수 있습니다.이 값들은 컨테이너 내부의 앱이나 서비스가 실행될 때 설정 값 또는 조건처럼 사용됩니다.environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' → 이 구조는 마치 아래와 같이 함수에 인자를 전달하는 것과 유사합니다:def start_..

Docker Compose에서 container_name과 hostname의 차이점은?

Docker Compose를 사용하다 보면 container_name과 hostname이라는 두 가지 설정을 자주 마주치게 됩니다.이 둘은 얼핏 비슷해 보이지만, 용도와 적용 범위가 완전히 다른 설정입니다. 이 글에서는 두 설정의 차이를 간단히 정리해보겠습니다. container_name이란?container_name은 Docker 자체가 해당 컨테이너를 식별하기 위한 이름입니다.CLI 명령어나 Docker 시스템 내부에서 사용됩니다.container_name: gitlab 예시:docker exec -it gitlab bash # 컨테이너 쉘 접속docker logs gitlab # 로그 보기 👉 이 이름은 Docker 명령어에서 컨테이너를 다룰 때 사용하는 식별자입니다..

도메인과 로컬 IP 주소의 관계

도메인(Domain)이란?도메인은 인터넷에서 어떤 컴퓨터(서버)를 사람이 읽기 쉬운 주소로 표현한 거야. 예를 들어:https://www.google.com ← 도메인사실은 → 142.250.206.78 같은 IP 주소로 연결돼📌 왜 도메인을 쓰는가?사람은 숫자(IP)보다 **단어(도메인)**를 기억하기 쉬움jupyter.mlops.io, gitlab.example.com 같은 주소를 통해 쉽게 접속 IP 주소란?IP 주소는 컴퓨터나 서버가 서로 통신할 때 사용하는 고유 주소야.인터넷 상의 “주소지” 같은 개념이야.예: 127.0.0.1 = loopback 주소 (자기 자신)192.168.0.1, 10.0.0.1 = 사설 IP142.250.206.78 = 공인 IP (예: 구글 서버) 로컬 IP 주소란..

Docker Compose란?

여러 개의 Docker 컨테이너를 정의하고 한 번에 실행/관리할 수 있게 해주는 도구 예를 들어:GitLab은 단일 컨테이너만으로는 동작하지 않고,GitLab 서버DB(PostgreSQL)Redis 등 여러 컨테이너가 필요한 경우가 많아.→ 이걸 한 줄로 다루기 위해 사용하는 게 Docker Compose 왜 사용하는가? 해당 코드 해석 (docker-compose.yml)services: gitlab: # 서비스 이름 image: gitlab/gitlab-ee:-ee.0 # 사용할 GitLab Docker 이미지 container_name: gitlab # 컨테이너 이름 restart: alway..

Docker Volume

Docker에서 데이터를 안전하게 저장하고 공유하려면 볼륨(Volume) 개념을 이해해야 합니다. 이번 포스트에서는 도커 볼륨과 볼륨 바인딩의 차이점 및 사용 방법을 정리하겠습니다. 컨테이너 내부 데이터 저장 방식 일반적으로 도커 컨테이너는 독립된 환경에서 실행되며, 컨테이너가 종료되면 내부 데이터도 함께 사라집니다.📌 즉, 컨테이너 내부에 저장된 데이터는 영구적으로 보관되지 않음!✅ 이를 해결하는 방법이 **볼륨(Volume)과 볼륨 바인딩(Volume Binding)**입니다.  도커 볼륨(Volume)    Docker 볼륨은 컨테이너와 독립적으로 관리되는 데이터 저장 공간입니다.컨테이너가 삭제되어도 볼륨은 유지됨여러 컨테이너가 동일한 볼륨을 공유 가능  ✔ my-first-volume이라는 볼륨..

Docker 네트워크 II

Docker를 활용할 때 네트워크(Networking)와 포트 바인딩(Port Binding) 개념을 이해하는 것은 필수입니다.이번 포스트에서는 포트 매핑과 네트워크 설정을 통한 컨테이너 통신에 대해 정리해보겠습니다. 포트 바인딩(Port Binding)과 매핑(Port Mapping)  도커 컨테이너 내부의 서비스(예: 웹 서버)는 기본적으로 외부에서 접근할 수 없습니다. 따라서 호스트 시스템의 특정 포트와 컨테이너 내부 포트를 연결하는 작업이 필요합니다. 이를 **포트 바인딩(Port Binding) 또는 포트 매핑(Port Mapping)**이라고 합니다.  🔹 0.0.0.0:4000->3000/tcp → 호스트의 4000 포트가 컨테이너의 3000 포트로 매핑된 상태📌 즉, localhost:..

Docker 네트워크

Docker 환경에서 컨테이너 간 통신을 원활하게 하려면 적절한 네트워크 설정이 필요합니다. 특히, 컨테이너가 **기본 브리지 네트워크(Bridge Network)**를 사용할 경우 외부에서 직접 접근할 수 없으며, 같은 네트워크에 속해야만 통신이 가능합니다. 이번 포스트에서는 Docker 컨테이너 간 네트워크 설정 및 통신 방법을 정리해보겠습니다.docker container run \--name mbti \-e PORT=3000 \--rm \-d \learncodeit/mbti:embedded-dblocallhost:3000/home -> 연결실패 명령어를 실행하면 mbti라는 이름의 컨테이너가 포트 3000에서 실행됩니다. 하지만, 호스트(localhost)에서 localhost:3000/home으..

Docker 컨테이너 실행 및 환경 변수 설정

Docker 컨테이너를 실행할 때는 단순한 docker run 명령어만 사용하기보다는, 적절한 옵션을 활용하여 컨테이너의 실행 방식을 더 효과적으로 제어하는 것이 중요합니다. 이번 포스트에서는 환경 변수 설정, 자동 삭제, 백그라운드 실행 등의 기능을 포함한 다음 Docker 명령어를 분석해보겠습니다.   명령어 분석(1) --name mbti컨테이너 이름을 mbti로 지정하여, 이후 docker ps 등에서 쉽게 확인 가능.(2) -e PORT=3000컨테이너 내부에서 사용할 환경 변수 PORT=3000을 설정하여 애플리케이션이 해당 포트를 사용하도록 지정.(3) --rm컨테이너가 종료되면 자동으로 삭제되도록 설정하여 불필요한 컨테이너가 남지 않음.(4) -d (Detached Mode)백그라운드에서 ..