목록배포 관리 도구/Docker (5)
우리네 장

현재 회사에서 사용하는 mac os는 M1 처리기를 사용하고 있습니다. 이전에는 intel 처리기를 사용했기 때문에, 최신 관리 되지 않는 3rd pary 모듈들은 M1을 지원하지 않는 경우가 많은데요. mac os 환경에서 디렉토리 내 이벤트를 감지하기 위해 "inotify"라는 모듈을 사용하고자 하였는데, git 에 보면 리눅스 os를 주로 지원하더라구요. mac 에서 해당 모듈을 사용하기 위해서는 프로그램 파일을 os 환경에 맞게 기계어로 컴파일 한 후 쫙 읽어서 실행해야 합니다. 이 경우, 컴파일 과정에서 프로그램에 필요한 환경 변수를 설정할 수 있는데요. 구동 이후에 변경할 수가 없습니다. 그래서 docker를 이용해서 이미 inotify가 설치되어 있는 이미지를 사용해 테스트를 해보려고 했어요..
실행하고자 하는 실행 파일이 존재하는 경우, 그냥 COPY 명령어를 통해 파일을 컨테이너 내부로 옮겨 실행하면 되지만, 실제 운영 환경에서 파이프라인을 통해 CI/CD를 구성할 때는 그 과정에서 빌드를 수행해 실행파일을 생성해줘야 한다. 이를 위해 Dockerfile 에서는 builder stage와 run stage를 구분지어 설정이 가능하다. [ 예시 파일 - react app ] FROM node:alpine as builder WORKDIR "/usr/src/app/" COPY package.json ./ RUN npm install COPY ./ ./ CMD [ "node", "run" ,"build" ] FROM nginx COPY --from=builder /usr/src/app/build ..

Docker compose는 다중 컨테이너로 구성된 도커 어플리케이션을 실행/중지 하기 위한 개념이다. Docker compose 사용을 위해서는 docker-compose.yml 파일이 필요한데, - Dockerfile : 현재 로컬 머신의 프로젝트를 docker를 이용해 이미지를 빌드하기 위한 파일 - docker-compose.yml : 다중 컨테이너들을 한 번에 실행할 때 컨테이너 끼리의 통신을 위한 설정 파일 이라고 생각하면 될 것 같다. 중요한 점은, 컨테이너들 끼리 통신하기 위해서는 반드시 설정이 필요한데, 멀티 컨테이너 네트워크 연결에 사용되는 것이 docker-compose.yml 파일이라는 점이다. [ 표현하고자 하는 프로젝트 구조 ] [ 완성된 docker-compose.yml 파일 ..
Docker image 생성 시 필요한 준비물! - Dockerfile - Base Image : image layers 중 가장 아래 위치하는 layer로 OS, jdk 등의 software가 위치한다. - 임시 컨테이너 : 사용자가 설정하는 부분은 아니고, docker가 이미지를 생성하면서 생성하는 임시 컨테이너 [ 일단 완성된 Dockerfile ] - 아래는 Node.js app 기준 - FROM node:10 --Base Image를 정한다 : / 생략 시 lastest로 가장 최신버전을 받아온다. WORKDIR /usr/src/app --WORKDIR을 지정하지 않을 시, 아래 CD 명령어에서 컨테이너 내부의 root 경로에 파일 을 복사한다. 이는 두 가지 문제점을 발생 시킨다. -- 1. ..
- 도커 이미지 내부 파일 구조 보기 docker + run + + [ ls ] 위 명령어에서 네 번째 ls 는 디렉토리의 구조를 조회하는 명령어 이다. 네 번째에 명령어가 추가적으로 기입 되었을 때 의미는 " 기존의 이미지의 실행 명령어를 무시하고 네 번째 기입된 명령어를 컨테이너에서 실행해라 " 는 의미이다. ex. docker run Alpine ls 그러나 docker run hello-world ls 는 실행가능하지 않다는 에러가 출력된다. 그 이유는 hello-world 이미지에는 ls 명령을 실행할 수 있는 실행 파일이 없기 때문이다. > 이미지에 따라서 실행할 수 있는 명령어가 다 다르다. - 컨테이너들 나열하기 docker + ps + [ -a ] -a는 all..