docker (46) 썸네일형 리스트형 [Docker] Dockerfile - Multi-stage build(멀티스테이지 빌드) 애플리케이션 개발 시에 개발 환경에서 사용한 라이브러리나 개발 지원 툴이 제품 환경에서 반드시 사용되는 것은 아닙니다. 제품 환경에는 애플리케이션을 실행하기 위해 최소한으로 필요한 실행 모듈만 배치하는 것이 컴퓨팅 리소스를 효율적으로 활용할 수 있다는 점에서 보안 관점으로 볼 때 바람직합니다. 멀티스테이지 빌드란? 컨테이너 이미지를 만들면서 빌드 등에는 필요하지만, 최종 컨테이너 이미지에는 필요 없는 환경을 제거할 수 있도록 단계를 나누어 기반 이미지를 만드는 방법 멀티스테이지 빌드를 사용하게 되면 위의 그림처럼 컨테이너 실행 시에는 빌드에 사용한 파일 및 디렉토리과 같은 의존 파일들이 모두 삭제된 상태로 컨테이너가 실행되게 됩니다. 결론적으로 좀 더 가벼운 크기의 컨테이너를 사용할 수 있게 됩니다. D.. [Docker] 이미지 레이어 구조 Dockerfile을 빌드하여 Docker 이미지를 작성하면 Dockerfile의 명령별로 이미지를 작성합니다. 작성된 여러 개의 이미지는 레이어 구조로 되어 있습니다. 다음은 4개의 명령으로 구성된 Dockerfile입니다. # Step 1 : Ubuntu (베이스 이미지) FROM ubuntu:latest # Step 2 : Nginx 설치 RUN apt-get update && apt-get install -y -q nginx # STEP 3 : 파일 복사 COPY index.html /usr/share/nginx/html # STEP 4: Nginx 시작 CMD ["nginx", "-g", "daemon off;"] Dockerfile과 같은 디렉토리에 index.html를 임의로 구성하고 doc.. [Docker] Dockerfile이란 Dockerfile Docker에서 인프라 구성을 기술한 파일을 'Dockerfile'이라고 함. Docker 이미지를 작성하기 위해서는 다음과 같은 내용들이 필요합니다. 베이스가 될 Docker 이미지 Docker 컨테이너 안에서 수행한 조작(명령) 환경변수 등의 설정 Docker 컨테이너 안에서 작동시켜둘 데몬 실행 Dockerfile은 이와 같이 Docker 상에서 작동시킬 컨테이너 구성 정보를 기술하기 위한 파일입니다. Docker의 build 명령은 Dockerfile에 기술된 구성 정보(Dockerfile)를 바탕으로 Docker 이미지를 작성합니다. Dockerfile의 기본 구문 Dockerfile은 텍스트 형식의 파일로, 에디터 등을 사용하여 작성합니다. 확장자는 필요 없으며, 'Dock.. [Docker] Container CPU 제한 docker run --it --name cpu_test1 --cpuset-cpus="0, 3" ubuntu bash //컨테이너 내부 $apt-get update $apt-get install stress $stress -c 2 Docker에서는 리소스를 제한(resource limit)하여 Container 생성 및 실행이 가능합니다. Container를 run 혹은 create 하는 경우 자원 할당량 가능 (생성 후 변경 시 update 이용) 옵션 미 지정 시 Container는 Host OS의 자원을 제한 없이 사용 가능 컨테이너의 리소스를 제한하는 기능은 Linux의 cgroups 기능 활용 Container CPU 제한 CPU 스케쥴링이란 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드.. [Docker] 실행 중인 컨테이너 한 번에 종료(삭제)하기 Docker를 사용하다보면 한 번에 여러 컨테이너를 삭제하고 싶을 때가 있습니다. 위의 실행중인 컨테이너를 모두 삭제하려면 다음과 같이 컨테이너 ID를 통하여 하나하나 삭제하는 방법도 있지만 컨테이너가 많은 경우 힘든 방법입니다. docker rm -f 47cf2a docker rm -f c09ab .... cs 실행 중인 컨테이너를 한 번에 종료하기 쉘스크립트 문법과 docker ps 명령어의 q옵션(quiet)을 이용하면 아주 간단하게 모든 컨테이너를 삭제할 수 있습니다. docker ps의 q(quite)옵션과 a(all)옵션을 사용하면 다음과 같이 실행중인 모든 컨테이너의 id만 출력되게 됩니다. docker ps -qa cs 이 속성을 이용하여 docker ps -qa의 결과를 $()로 감싸서 .. [Docker] Docker에서 node.js 웹 서버 실행 Docker에서 node.js 이미지를 다운로드 받아 node.js 웹 서버를 실행 시키는 예제 입니다. 1. node.js 이미지 다운로드 우선 hub.docker.com 에서 다운로드 받을 node 이미지의 버전을 확인합니다. hub.docker.com/_/node node We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our p.. [Docker] Docker에서 Nginx Webserver를 실행해보자. Docker에서 nginx 이미지를 받아 nginx Webserver를 실행시키는 예제이다. 1. Nginx 이미지 다운로드 우선 hub.docker.com 에서 다운로드 받을 nginx 이미지의 버전을 확인합니다. hub.docker.com/_/nginx nginx We and third parties use cookies or similar technologies ("Cookies") as described below to collect and process personal data, such as your IP address or browser information. You can learn more about how this site uses Cookies by reading our privacy.. [Docker] 이미지 목록 표시 (docker image ls) Docker 에서 다운받은 이미지 목록을 표시할 땐 다음과 같이 명령어를 사용한다. docker image ls [옵션] [리포지토리명] 혹은 docker images [옵션] [리포지토리명] 지정 가능한 옵션은 다음과 같다. 옵션 설명 -all, -a 모든 이미지를 표시 --digests 다이제스트 표시 여부 --no-trunc 결과를 모두 표시 --quiet, -q Docker 이미지 ID만 표시 Docker image ls 명령어를 실행하면 다음과 같다. docker image ls 출력 결과의 각 항목의 의미는 다음과 같다. 항목 설명 REPOSITORY 이미지 이름 TAG 이미지 태그명 IMAGE ID 이미지 ID CREATED 작성일 SIZE 이미지 크기 옵션을 함께 입력하면 옵션에 따라 출력.. [Docker] Docker의 작동 구조 (4) (이미지 데이터 관리) Docker 이미지의 데이터 관리 장치 'Copy on Write'란 복사를 요구 받으면 바로 복사하지 않고 원래의 데이터를 그대로 참조시켜, 원본 또는 복사 어느 쪽에 수정이 가해진 시점에 비로서 새로운 빈 영역을 확보하고 데이터를 복사하는 것을 뜻한다. Docker에서는 'Copy on Write' 방식으로 컨테이너의 이미지를 관리한다. Docker의 이미지를 관리하는 스토리지 디바이스로는 다음과 같은 것들이 있다. AUFS 다른 파일 시스템의 파일이나 디렉토리를 투과적으로 겹쳐서 하나의 파일 트리를 구성할 수 있는 파일 시스템. 단, 현재 AUFS는 표준 Linux 커널의 일부가 아니다. Btrfs Linux용 Copy on Wirte 파일 시스템으로, Oracle에 의해 2007년 발표되었다. B.. [Docker] Docker의 작동 구조 (3) (네트워크 구성) 네트워크 구성(가상 브리지/가상 NIC) Linux는 Docker를 설치하면 서버의 물리 NIC(Network Interface Card)가 docker()라는 가상 브리지 네트워크로 연결된다. 이 docker()는 Docker를 실행시킨 후에 default로 만들어진다. Docker 컨테이너가 실행되면 컨테이너에 172.17.0.0/16이라는 서브넷 마스크를 가진 프라이빗 IP 주소가 eth0으로 자동으로 할당된다. 이 가상 NIC는 OSI 계층의 Layer 2인 가상 네트워크 인터페이스로, 페어인 NIC와 터널링 통신을 한다. 가상 NIC(vethxxx)는 컨테이너에서는 eth0으로 인식된다. Docker 컨테이너와 외부 네트워크가 통신을 할 때는 가상 브리지 docker()와 호스트 OS의 물리 N.. 이전 1 2 3 4 5 다음