문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
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> |