[Docker] bind mount의 permission denied 문제

UID? GID? 그게 뭔데 씹덕아

1. 문제 상황 Docker에서 bind mount를 사용할 때 가장 많이 만나는 문제가 있다. 바로 permission denied다. 귀찮아서 무시하고 있었는데 드디어 시간을 내서 정리해본다. 결론부터 말하하면 이 문제는 컨테이너의 사용자와 호스트 파일의 소유자가 다르기 때문에 접근 권한이 없을 때 발생한다. 2. UID와 GID 가. 도커의 3단계 권한 흐름 Docker는 아래 3단계를 거쳐 실행된다. 단계 역할 특징 … 더 읽기

[Docker] 명령어 실행 권한 부여

Docker 실행 권한 부여 썸네일

Docker는 기본적으로 root 권한이 필요한 daemon과 통신하기 때문에 일반 사용자는 바로 명령을 실행할 수 없다. 매번 sudo를 사용할 수 없다면 사용자에게 docker 명령어 실행 권한을 부여해야 한다. docker 그룹에 사용자를 추가하면 sudo 없이 Docker 명령을 실행할 수 있게 된다. 1. docker 그룹 존재 확인 docker 그룹은 보통 docker 설치 시 자동 생성된다. 없으면 직접 생성할 … 더 읽기

[Docker] Compose로 실행 중인 이미지 업그레이드

Featured image for [Docker] Compose로 실행 중인 이미지 업그레이드

Proxmox로 직접 서비스를 운영하고 있다. 보안 때문에 최소 한 달에 한 번은 업데이트를 진행하고 있다. 매달 Docker compose를 업그레이드하는 방법을 까먹어서 기록으로 남긴다. 로컬에 동일한 이미지가 있더라도, 원격 레지스트리(Docker Hub 등)에 있는 digest(SHA256) 값을 비교한다. digest가 다르면 최신 이미지를 다시 pull한다.  

[Docker] 예제

Featured image for [Docker] 예제

3번의 프로젝트를 진행하면서 추후 참고할 만한 부분만 가져왔습니다. 1. 디렉터리 구조 2. Dockerfile 예시 가. frontend (react) 나. backend (java) 다. backend (python) 3. docker-compose.yml 예시 가. certbot 나. db (mysql) 다. app 라. 기타 1) health check MySQL 컨테이너의 상태를 체크하는 healthcheck 설정이다. mysqladmin ping 명령어로 데이터베이스 연결을 확인하며, 20초 타임아웃에 최대 10번 재시도한다. … 더 읽기

[Nginx] HTTPS 적용

Featured image for [Nginx] HTTPS 적용

  1. HTTPS 필요 Nginx SSL Termination이란 Nginx 서버가 클라이언트와의 SSL/TLS 연결을 종료하고, 그 이후의 트래픽을 암호화 없이 백엔드 서버로 전달하는 과정을 의미한다. 이를 통해 백엔드 서버의 부담을 줄이고, SSL/TLS 관리와 인증을 Nginx가 처리할 수 있도록 한다. 외부와의 통신은 보안이 중요한 만큼 HTTPS를 사용하여 데이터를 암호화한다. 외부에서 제3자가 데이터가 전송되는 동안 데이터를 들여다볼 수 없게 … 더 읽기

[Docker] MySQL 설치

Featured image for [Docker] MySQL 설치

  1. Dockerhub mysql mysql – Official Image | Docker Hub node.js 수업이 mysql을 사용하게 되었다. 따라서 mysql을 Dockerfile에 추가하고 docker-compose.yml에도 추가해야 한다. compose만 수행하면 바로 사용할 수 있도록 만들고 싶다. 2. docker-compose.yml 분석 운 좋게도 compose를 공부하면서 mysql이 사용된 예시를 사용했다. 이것을 조금 참고해서 작성하면 되겠다. 가. mysql image 가져오기 나. bind mount 하기 … 더 읽기

[Docker] Multi-architecture build

Featured image for [Docker] Multi-architecture build

1. 멀티 플랫폼을 지원하는 이미지 생성하기 Multi-platform Introduction to what multi-platform builds are and how to execute them using Docker Buildx. [Docker] Buildx로 cross-platform 이미지 빌드하기 Buildx Docker는 multi-architecture 빌드 등, 다양한 빌드 옵션을 지원하는 CLI 플러그인을 제공합니다. Buildx는 19.03 이후 버전부터 사용이 가능하다고 하니 버전 확인이 필요합니다. 공식 문서에 따르면, Docker Desktop을 https://gurumee92.tistory.com/311 2. … 더 읽기

[Docker] Github와의 연동

Featured image for [Docker] Github와의 연동

0. 참고자료 출처 : https://youtu.be/cqlY1Hc70H0 1. Github와 Docker의 만남 왜 만남? 기본적으로 생성한 이미지를 dockerhub에 업로드할 수 있다. 하지만 dockerhub에서는 무료 비공개 업로드는 하나밖에 안 된다. 그래서 다수의 비공개 업로드를 위해서 Github를 활용할 필요가 있다. 2. Container Registry Github의 Packages에서는 Container Registry라는 기능을 제공한다. (Docker는 현재 Container Registry로 대체되었다.) Working with the Container registry – … 더 읽기

[Docker] 연습하기

1. 연습 시작 0) 실습 환경 조성 1) 이미지로 컨테이너_1 만들기 2) 컨테이너_1에 test.txt 만들기 3) 컨테이너_1을 commit해서 이미지로 만들기 4) 컨테이너_2 만들기. 이때 호스트에 bind mount하기 5) test.txt가 마운트한 호스트에 있는지 확인 → 없다 6) 컨테이너_2 안에 test.txt가 있는지도 확인 → 없다 → 아마 마운트 시점에 호스트의 디렉터리는 비어있었고 마운트 되면서 컨테이너의 디렉터리도 덮어쓰면서 … 더 읽기

[Docker] Compose

Featured image for [Docker] Compose

0. Compose? 사랑합니다. 이고잉님 솔직히 docker run 명령어를 사용할 때마다 너무 복잡하다고 느낀다. 혹시 옵션이 하나라도 누락되었을까 걱정되기도 한다. 또 도커를 모르는 친구들과 협업할 때 저 docker run 명령어의 옵션을 하나하나 설명하는 것은 … 좀 그렇다. compose가 이런 걱정을 덜어줄 수 있다. 1. Compose! 이런 상황을 가정하자 docker-compose.md GitHub Gist: instantly share code, notes, and … 더 읽기