728x90 개발공부 개발새발/Docker9 Docker ) 유틸리티 컨테이너 유틸리티 컨테이너 애플리케이션이 아닌, 특정 환경만 포함하는 컨테이너, (NodsJS 실행 환경이나 PHP 실행 환경 등.) 실습 docker run -it -d node 노드 컨테이너를 실행시킨다. 이 때, -d 로 컨테이너에 접속하지는 않는다. 다만 -it 로 입력을 받는 것을 대기하는 상태로는 놔둔다. docker exec -it CONTAINER_NAME npm init 실행 중인 컨테이너에 추가 명령을 실행하기 위해 exec 로 접속한다. 메인 프로세스를 중단시키지 않고 컨테이너 내부에 작성된 로그 파일을 읽는 등에 유용함. 다른 명령도 계속 입력받도록 -it 를 추가한다. 이거 두 개를 함께 해야 제대로 접속해서 명령을 입력할 수 있음. 저 이름 컨테이너에 npm init 을 입력받는다고 생각.. 2024. 4. 3. Docker ) Docker-Compose Docker-Compose [Orchestration Command Set] 자동화 설정 명령 셋. docker build , docker run 명령을 대체해주는 도구. 다수의 명령들을 하나의 구성 파일로 합친다. 💡 모든 컨테이너를 즉시 시작하고, 필요하다면 모든 이미지를 빌드해버린다. 모든 것을 중지하고 중단하는 것도 가능 ! 하지만 도커 컴포즈는 커스텀 이미지를 위한 Dockerfile 을 대체할 순 없다. Dockerfile 과 함께 작동 가능 이미지나 컨테이너를 대체하는 것이 아니라, 그 작업을 더 쉽게 할 수 있게 해주는 것. 다수의 호스트에서 다중 컨테이너 관리에는 적합하진 않다. 하나의 호스트에서 다중 컨테이너를 관리하는 데에 강점이 있음. 컴포즈 파일에서 정의해야하는 것 Service .. 2024. 4. 3. Docker ) 다중 컨테이너 다중 컨테이너 DB 서버 (mongoDB) 백엔드 서버 프론트엔드 서버 다중 컨테이너로 통신해볼까용 ? Network docker network create goals-net MongoDB docker run -d --name mongo --network goals-net mongodb Backend (node.js) // 코드 변경 mongoose.connect( // localhost -> mongo (mongodb 컨테이너 이름) 'mongodb://mongo:27017/course-goals', { useNewUrlParser: true, useUnifiedTopology: true, }, (err) => { if (err) { console.error('FAILED TO CONNECT TO MO.. 2024. 4. 2. Docker ) Network Network 컨테이너 내부에서 네트워크를 사용해보자. 다수의 컨테이너를 연결. 중간 컨테이너 애플리케이션이 다른 컨테이너에 있는 애플리케이션과 통신(DB 컨테이너와) 도커 컨테이너를 사용하면, 각각 컨테이너가 한 가지 주요 작업을 하는 것이 권장됨. 컨테이너가 서로 통신. 컨테이너에서 실행 중인 애플리케이션을 로컬 호스트 머신에 연결. 컴퓨터에서 실행 중인 다른 서비스에 HTTP 보내기 ! 컨테이너 내부에서 www 연결 데이터 베이스와 통신 컨테이너에서 www 와 통신하는 것은 별다른 설정 없이도 가능하다. 하지만 로컬 호스트나 다른 컨테이너와의 통신이 필요할 땐, 설정해주어야 한다. 로컬 호스트와 통신 mongoose.connect( // 'mongodb://localhost:27017/swfavor.. 2024. 3. 29. Docker ) ARG 와 ENV .dockerignore COPY . . 해당 명령은 모든 파일을 복사한다. 하지만 복사하지 않아도 되는 (안 하고 싶은) 파일이 있을 땐 ? .dockerignore 를 사용하자! # npm install 을 실행한다면, 로컬 node_module 폴더를 굳이 복사할 필요가 없겠지? node_modules # Dockerfile 은 도커 이미지를 만드는 명령어 파일이니 프로젝트에 복사될 필요는 없다. Dockerfile # git 관련 파일도 추가가 필요 없당. .gitignore .dockerignore 이름으로 루트 프로젝트 폴더(Dockerfile 이 존재하는) 파일을 생성한다. 복사하고 싶지 않은 파일들의 경로 이름을 써준다. 환경 변수 도커는 빌드 타임 인수arg와 런타임 환경 변수env를 지.. 2024. 3. 18. Docker ) 도커 볼륨과 바인드 마운트 도커 데이터 우리가 도커 파일을 작성할 때 복사했던 소스코드 이미지, 변경 불가. (read-only) 새 소스 코드로 업데이트하려면 이미지를 새로 생성해야함. 임시 애플리케이션 데이터. (컨테이너) (read-write) 애플리케이션이 실행되는 동안 생성. → 사용자가 입력 폼에 뭔가 입력한다거나..할 때 컨테이너가 처리할 때 임시 데이터 컨테이너가 종료될 때 데이터가 없어져도 상관 없음. 말 그대로 임시 데이터. 영구 애플리케이션 데이터 (read-write) 파일에 저장하거나 데이터베이스에 데이터를 컨테이너에 그 데이터를 가져와 저장 컨테이너가 삭제되더라도 살아있어야하는 데이터. (유저 데이터라던지) 그것은 “볼륨” 💡 이미지는 read-only, 컨테이너는 read-write. 컨테이너는 이미지와.. 2024. 3. 18. 이전 1 2 다음 728x90