DevOps/Docker

DevOps/Docker

    [Docker] m1 mac에서 image build 후 Linux에서 실행하는 방법

    Docker : exec /usr/bin/sh: exec format error 최근 진행중인 프로젝트의 서버를 배포하는 과정에서 생긴 이슈이다. 상황 m1 맥북에서 Spring 이미지를 빌드했다. 내 dockerhub 레지스트리로 푸시했다. 우분투 리눅스 서버에서 내가 만든 이미지를 받아서 컨테이너로 실행했다. ! 에러 ! 도커 컨테이너를 실행하면 내가 지정해준 entrypoint -> command 순으로 명령어가 실행된다. 그런데 명령어 실행이 전혀 안되고 위와 같은 에러만 내뿜었다. Dockerfile의 CMD나 docker-compose 파일의 entrypoint를 수정해봤지만 여전히 같은 에러가 났다. 문제점 m1 맥북은 ARM 아키텍처를 사용한다. 그래서 m1에서 도커 이미지를 빌드하면 ar..

    [Docker] 이미지와 레이어(layer) 구조

    도커의 이미지는 컨테이너를 만드는 '압축파일'이라고 생각하면 이해가 편하다. 도커 이미지는 도커 컨테이너를 만들기 위한 모든 정보를 가지고 있다. 한 번 만들어지면 이미지 내의 정보는 절대 변하지 않으며, 이미지를 통해서 컨테이너가 만들어진다. 이미지는 컨테이너를 만들어도 사라지지 않으며 여러 개의 컨테이너를 만들 수 있다. 도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 보통 용량이 수백MB이다. 처음 컨테이너를 만들기 위해서 이미지를 다운로드하는 건 당연히 그럴 수 있다. 그런데 이미지의 불변성 때문에 현재 이미지에 수정사항이 생겨 파일을 단 하나 추가된 이미지를 새로 다운로드한다고 가정하자. 기존 이미지에 파일 하나 추가했다고 수백MB를 다시 다운받는다면 매우 비효율적일 수 ..

    [Docker] 컨테이너 기능별, 포트별 분리 (feat. nginx)

    QuantManegement 퀀트 투자의 간편화 quant.or.kr 현재 진행중인 프로젝트 웹 페이지이다. 페이지를 구성하기 위해서는 현재 상장된 약 2400개 기업의 재무제표를 모두 크롤링 해와야 한다. 단순히 빠르게 크롤링 하려면 파이썬의 병렬 스레드나 멀티 프로세싱 기술을 사용해서 크롤링 하면 수십만개의 재무제표를 크롤링 하는데 그리 오랜 시간이 걸리지 않을 것이다. 하지만 크롤링을 하기위해서 접근하는 opendart 페이지와 opendart의 api를 사용하기 위해서는 1분당 접근이 1000회를 넘어가서는 안되며 하루에 10000번으로 접근횟수가 제한되어있다. 따라서 재무제표 크롤링은 시간을 들여야하는 조심스러운 작업이라고 생각했고, 크롤링을 위한 컨테이너를 따로 만들어줘서 안정적인 크롤링 환경..

    [Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기

    [Docker] certbot 컨테이너를 사용해 SSL 인증서 발급받기

    백엔드의 비즈니스 로직을 마무리했다면 내 기준 가장 중요하다고 생각하는 배포 단계가 남아있다. 클라우드에 WAS 서버를 올리고, Nginx를 연결해 80번 포트로 통신하게 둔다면 편하게 웹사이트를 구동할 수 있다. 하지만 http로만 통신할 수 있는 웹 사이트는 어딘가 불안정해 보인다. 기본적인 암호화가 제공되지 않기 때문에 로그인을 할 때마다 비밀번호 노출에 대한 위험을 항상 감수해야 할 것이다. 따라서 앞으로 배포할 모든 서비스에 대해서 나는 SSL + HTTPS로 배포할 것이다. SSL 인증서를 발급받기 위해서 무료로 인증서를 발급해주는 기관인 'Let's Encrypt'가 공식적으로 지원하는 certbot을 사용할 것이다. Certbot의 도메인 인증 절차 인증서를 발급받기 전에 certbot이 ..

    [Docker] Docker Swarm 서비스하기

    [Docker] Docker Swarm 서비스하기

    [Docker] Docker Swarm에 대해서 [Docker] docker-compose로 편하게 개발환경 구성하기 [Docker] Django 개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Co.. hyeo-noo.tistory.com 지난 포스팅에서 도커 스웜의 필요성을 정리했었다. 지금까지 한 내용을 요약해보면 개별적인 이미지들을 하나씩 컨테이너로 수동으로 만들어 주고 컨테이너끼리 연결해보았다. 컨테이너 설정을 모아둘 수 있는 docker-compose를 이용해서 한 번에 필요한 모든 컨테이너를 가동시켰다. 이제 docker swarm을 시작하고 지금까지 만들었던 컨테..

    [Docker] Docker Swarm에 대해서

    [Docker] Docker Swarm에 대해서

    [Docker] docker-compose로 편하게 개발환경 구성하기 [Docker] Django 개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이.. hyeo-noo.tistory.com docker-compose를 사용해보았으면 docker-compose.yml파일에 모든 볼륨 바인딩, 포트 포워딩, 네트워크, 이미지, 환경변수 설정 등 컨테이너를 구성하는데 필요한 정보들을 기록해 놓을 수 있다는 것이 정말 편하다는 것을 느낄 수 있다. 그리고 docker-compose up -d 명령어 하나..

    [Docker] docker-compose로 편하게 개발환경 구성하기

    [Docker] docker-compose로 편하게 개발환경 구성하기

    [Docker] Django 개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇인지 잘 모르겠.. hyeo-noo.tistory.com [Docker] Django 개발 환경 세팅 #2 [Docker] Django개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이.. hy..

    [Docker] Docker 관련 tip #1

    [Docker] Docker 관련 tip #1

    docker 실행중인 컨테이너를 정지하고 삭제를 한번에 $ docker rm -f {컨테이너 id or 컨테이너 name} -f 명령어를 사용해서 강제로 컨테이너를 멈추고 삭제할 수 있다. docker stop {컨테이너}, docker rm {컨테이너} 와 같은 과정을 줄일 수 있다. Docker Desktop 에서의 볼륨의 위치 docker를 윈도우나 맥에서 설치하고 구동하려면 docker desktop 이라는 프로그램을 설치하게 된다. (docker-machine은 사용할 일이 있다면 공부할 예정. docker desktop과 docker-machine 은 구동 방식이 완전히 다릅니다.) docker 의 named 볼륨을 설정하고 컨테이너와 연결했다고 하자. 이때 볼륨 데이터에 엑세스 하는 과정은 ..

    [Docker] Django 개발 환경 세팅 #2

    [Docker] Django 개발 환경 세팅 #2

    [Docker] Django개발 환경 세팅 #1 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇인지 잘 모르겠.. hyeo-noo.tistory.com 지난 포스팅에 이어서 mariadb 컨테이너를 만들고 네트워크를 통해서 둘을 연결해보자 [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇..

    [Docker] Django 개발 환경 세팅 #1

    [Docker] Django 개발 환경 세팅 #1

    [Docker] MariaDB - docker로 관리하기 [Docker] Nginx 웹서버 구동해보기 컨테이너에 대하여 [Container 시리즈] 00. Container/ Docker란 뭔가요? Container / Docker 컨테이너.. 들어봤는데 무엇인지 잘 모르겠다..라고 생각하시는 분들을 위하여 이.. hyeo-noo.tistory.com Django와 MariaDB를 연결해서 로컬 개발환경을 구축해보자 Nginx를 연결하지 않는 이유 로컬 환경에서 nginx까지 연결하게되면 코드를 수정하고 변경사항을 볼 때마다 django 컨테이너를 재시작해주어야 확인이 가능하다. 그리고 static파일을 따로 관리하는데 약간의 추가작업이 필요하기 때문에 더욱이 로컬 환경에서 nginx를 사용할 필요는 없..