문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
|
wiki:3party:docker:도커파일_사용법 [2022/11/22 12:35] hgkim 만듦 |
wiki:3party:docker:도커파일_사용법 [2023/01/13 18:44] (현재) |
||
|---|---|---|---|
| 줄 10: | 줄 10: | ||
| ===== 사전에 설치가 필요한 프로그램 ===== | ===== 사전에 설치가 필요한 프로그램 ===== | ||
| * 도커 | * 도커 | ||
| - | * 리눅스 배포판 프로그램 | + | * 리눅스 배포판 프로그램(이 글은 우분투 22.04 버전 사용.) |
| ===== 아래 명령어들은 어디서 쳐야하나? | ===== 아래 명령어들은 어디서 쳐야하나? | ||
| 줄 17: | 줄 17: | ||
| ===== 도커파일란? | ===== 도커파일란? | ||
| * 이미지 생성에 필요한 설정 파일 | * 이미지 생성에 필요한 설정 파일 | ||
| - | * 이미지를 코드(YAML 파일)를 통해서 정의하고 실행하는 역할을 하며, 설정 파일인 `yaml`을 기반으로 동작. | + | * Dockerfile은 텍스트 형식이며, 인프라 구성을 기술한 파일을 " |
| - | * 재사용 가능 | + | * Docker 이미지를 작성하기 위해서는 다음과 같은 내용들이 필요합니다. |
| - | + | - 베이스가 될 Docker 이미지 | |
| - | =====YAML | + | - Docker 컨테이너 안에서 수행한 조작(명령) |
| + | - 환경변수 등의 설정 | ||
| + | - 재사용 가능 | ||
| * 구조화 데이터나 오브젝트를 문자열로 변환하기 위한 데이터 형식의 한 종류. | * 구조화 데이터나 오브젝트를 문자열로 변환하기 위한 데이터 형식의 한 종류. | ||
| - | * Space를 사용한 들여쓰기를 통해 데이터 계층을 표시. | ||
| - | ★** 주의사항 - tab키 절대 사용 금지. 들여쓰기의 크기가 | + | =====Dockerfile 명령어===== |
| + | | 명령어 | 역할 | | ||
| + | | FROM | Docker Base Image (기반이 되는 이미지, < | ||
| + | | MAINTAINER | 메인테이너 정보 | | ||
| + | | RUN | Shell Script 또는 명령을 실행 | | ||
| + | | CMD | 컨테이너가 실행되었을 | ||
| + | | LABEL | 라벨 작성 (docker inspect 명령으로 label 확인할 수 있습니다.) | | ||
| + | | EXPOSE | 호스트와 연결할 포트 번호를 설정한다. | | ||
| + | | ENV | 환경변수 설정 | | ||
| + | | ADD | 파일 / 디렉터리 추가 | | ||
| + | | COPY | 파일 복사 | | ||
| + | | ENTRYPOINT | 컨테이너가 시작되었을 때 스크립트 실행 | | ||
| + | | VOLUME | 볼륨 마운트 | | ||
| + | | USER | 명령 실행할 사용자 권한 지정 | | ||
| + | | WORKDIR | " | ||
| + | | ARG | Dockerfile 내부 변수 | | ||
| + | | ONBUILD | 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행 | | ||
| + | | SHELL | Default Shell 지정 | | ||
| - | =====docker-compose.yml 특징===== | ||
| - | - `YAML` 파일은 도커컴포즈에 관한 설정을 담음. | ||
| - | - 확장자로 `.yml`, | ||
| - | - **key / value** 구조로 구성. | ||
| - | - 대소문자를 구분. | ||
| - | - 콜론(:) 뒤에는 한 칸을 띄고 사용. ex)`image: centos: | ||
| - | - 대시(-)로 복수의 값을 나열. | ||
| - | - 주석 표기는 해시(# | ||
| - | ★** 주의사항 - 콜론(:) 뒤에 단어 붙여쓰기 금지. 인식 불가로 인한 오류발생.** | ||
| - | =====docker compose 파일의 구조===== | + | =====Dockerfile을 통한 이미지 파일 생성 방법===== |
| - | =====Docker Compose 명령어===== | + | |
| - | + | ||
| - | * **docker-compose.yaml 파일이 위치한 디렉토리 에서 실행 (반드시)** | + | |
| - | * 특정 파일의 위치를 정의. | + | |
| - | <code bash> | + | |
| - | 1. docker-compose up # 서비스와 관련된 컨테이너 생성 그리고 시작 | + | |
| - | 2. docker-compose down # 서비스와 관련된 컨테이너 종료 후 제거 | + | |
| - | 3. docker-compose start/ | + | |
| - | 4. docker-compose kill # 실행 중인 컨테이너에 SIGKH 시그널을 통해서 강제 종료 | + | |
| - | 5. docker-compose pause/ unpause | + | |
| - | 6. --build | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | =====Docker Compose 명령어 실행 옵션===== | + | |
| - | | -d | 백그라운드 실행 | + | |
| - | | --no-deps | + | |
| - | | --build | + | |
| - | | -t | 타임아웃을 지정(기본 10초) | + | |
| - | + | ||
| - | =====Docker Compose.yml | + | |
| - | | 구분 | + | |
| - | | version : | 버전 지정 | + | |
| - | | services : | 서비스 정의 | + | |
| - | | volumes : | 컨테이너에 볼륨 Mount | 최상위 | + | |
| - | | build : | 빌드 환경 설정 | + | |
| - | | context : | Dockerfile 이 있는 디렉토리 지정 | + | |
| - | | dockerfile : | Dockerfile의 이름이 다를경우 설정 | + | |
| - | | image : | 이미지 지정 | + | |
| - | | command : | container 에서 작동하는 명령 | + | |
| - | | entrypoint : | container 에서 작동하는 명령 | + | |
| - | | environment : | 컨테이너 안 환경변수 설정 | + | |
| - | | container_name : | 컨테이너 이름 설정 | + | |
| - | | links : | 다른 컨테이너와 연결 | + | |
| - | | ports : | Host 에 컨테이너가 공개하는 포트지정 | + | |
| - | | expose : | 컨테이너끼리 공개하는 포트 지정 | + | |
| - | + | ||
| - | + | ||
| - | =====도커컴포즈를 통한 컨테이너 | + | |
| <code bash> | <code bash> | ||
| 1. hgkim@LAPTOP-266L93S4:/ | 1. hgkim@LAPTOP-266L93S4:/ | ||
| 줄 82: | 줄 52: | ||
| 2. hgkim@LAPTOP-266L93S4:/ | 2. hgkim@LAPTOP-266L93S4:/ | ||
| </ | </ | ||
| - | < | + | < |
| - | FROM 만들 이미지 파일 (이미지이름: | + | |
| - | 추가적으로 필요한 명령어 | + | FROM centos: |
| - | </ | + | RUN yum -y update\ |
| - | <code bash> | + | && yum -y install sudo\ |
| - | 3. hgkim@LAPTOP-266L93S4:/ | + | && yum -y install net-tools\ |
| - | </ | + | && yum -y install libjpeg* libpng* freetype* gd-* gcc gcc-c++ gdbm-devel libtermcap-devel\ |
| - | <code bash> | + | && yum -y install firewalld\ |
| - | ### docker-compose.yml | + | && yum -y install openssh-server openssh-clients openssh-askpass |
| - | version: " | + | |
| - | services: | + | ENTRYPOINT ["/ |
| - | | + | #ENTRYPOINT ["실행명령어" |
| - | | + | |
| - | context: . # | + | |
| - | ports: | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | | + | |
| - | user: root | + | |
| - | privileged: true #기본적으로는 Unprivileged모드로 | + | |
| - | | + | |
| - | </ | + | |
| - | <code bash> | ||
| - | 4. docker-compose up -d --build | ||
| - | 5. docker exec -it 컨테이너명 / | ||
| </ | </ | ||
| + | 3.DockerBuild - 도커파일을 이미지 파일로 빌드시키는것. 도커컴포즈 파일을 이용하여 도커파일을 빌드하는게 일반적임. | ||
| + | * 이유)도커컴포즈에서 빌드시 도커파일이 변경되어도 변경된 이미지를 빌드하여 사용하지만 도커파일에서 빌드시 새로운 이미지가 생기면 도커컴포즈에 이미지 이름도 바꿔야하기때문임. | ||
| + | 만약 만든 이미지를 더이상 수정하지 않을꺼라면 아래 명령어를 통해 이미지 생성 가능.< | ||
| ===도커컴포즈와 도커파일을 통한 활용 방법=== | ===도커컴포즈와 도커파일을 통한 활용 방법=== | ||
| - | * 검색솔루션에 사용할 재사용 가능한 적절한 OS 컨테이너를 만들 수 있음. | + | * 검색솔루션에 사용할 재사용 가능한 적절한 OS 이미지를 만들 수 있음. |
| * 검색솔루션 설치(도커 기반) 과정을 줄일 수 있음. | * 검색솔루션 설치(도커 기반) 과정을 줄일 수 있음. | ||
| {{tag> | {{tag> | ||