사용자 도구

사이트 도구


wiki:3party:docker:도커파일_사용법

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
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은 텍스트 형식이며, 인프라 구성을 기술한 파일을 "**Dockerfile**" 이라고 함. 확장자는 따로 존재하지 않음
-  * 재사용 가 +  * Docker 이미지를 작성하기 위해서는 다음과 같은 내들이 필요합니다. 
- +    - 베이스가 될 Docker 이미지 
-=====YAML (YAML Ain’t Markup Language)란=====+    - 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 | "RUN", "CMD", "ENTRYPOINT" 명령이 실행될 작업 디렉터리 | 
 +| ARG | Dockerfile 내부 변수 | 
 +| ONBUILD | 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행 | 
 +| SHELL | Default Shell 지정 |
  
-=====docker-compose.yml 특징===== 
-  - `YAML` 파일은 도커컴포즈에 관한 설정을 담음. 
-  - 확장자로 `.yml`, `.yaml`의 형식을 사용. 
-  - **key / value** 구조로 구성. 
-  - 대소문자를 구분. 
-  - 콜론(:) 뒤에는 한 칸을 띄고 사용. ex)`image: centos:7.9.2009` 
-  - 대시(-)로 복수의 값을 나열. 
-  - 주석 표기는 해시(#)를 이용. 
-★** 주의사항 - 콜론(:) 뒤에 단어 붙여쓰기 금지. 인식 불가로 인한 오류발생.** 
  
-=====docker compose  파일의 구조===== +=====Dockerfile을 통한 이미지 파일 생성 방법=====
-=====Docker Compose 명령어===== +
- +
-  * **docker-compose.yaml 파일이 위치한 디렉토리 에서 실행 (반드시)** +
-  * 특정 파일의 위치를 정의. +
-<code bash> +
-1. docker-compose up                         # 서비스와 관련된 컨테이너 생성 그리고 시작 +
-2. docker-compose down                       # 서비스와 관련된 컨테이너 종료 후 제거 +
-3. docker-compose start/stop/restart         # 서비스 관련 컨테이너 시작 / 종료 / 재시작 +
-4. docker-compose kill                       # 실행 중인 컨테이너에 SIGKH 시그널을 통해서 강제 종료 +
-5. docker-compose pause/ unpause             # 컨테이너 정지 /재가동 +
-6. --build                                   # 컨테이너를 생성하기 전에 이미지를 빌드다. +
-</code> +
- +
- +
-=====Docker Compose 명령어 실행 옵션===== +
-| -d         | 백그라운드 실행             | +
-| --no-deps  | 링크 서비스 실행하지 않음   | +
-| --build    | 이미지 빌드                 | +
-| -t         | 타임아웃을 지정(기본 10초) +
- +
-=====Docker Compose.yml 파일 내 사용가능한 옵션===== +
-| 구분              | 내용                                  | 명령어 순위     | +
-| version :         | 버전 지정                             | 최상위          | +
-| services :        | 서비스 정의                           | 최상위          | +
-| volumes :         | 컨테이너에 볼륨 Mount                 | 최상위          | +
-| build :           | 빌드 환경 설정                        | service의 하위 +
-| context :         | Dockerfile 이 있는 디렉토리 지정      | build의 하위    | +
-| dockerfile :      | Dockerfile의 이름이 다를경우 설정     | build의 하위    | +
-| image :           | 이미지 지정                           | build의 하위    | +
-| command :         | container 에서 작동하는 명령          | service의 하위 +
-| entrypoint :      | container 에서 작동하는 명령          | service의 하위 +
-| environment :     | 컨테이너 안 환경변수 설정             | service의 하위 +
-| container_name :  | 컨테이너 이름 설정                    | service의 하위 +
-| links :           | 다른 컨테이너와 연결                  | service의 하위 +
-| ports :           | Host 에 컨테이너가 공개하는 포트지정  | service의 하위 +
-| expose :          | 컨테이너끼리 공개하는 포트 지정       | service의 하위 +
- +
- +
-=====도커컴포즈를 통한 컨테이너 생성 방법=====+
 <code bash> <code bash>
 1. hgkim@LAPTOP-266L93S4:/usr/bin$ sudo mkdir DockerCompose                       # Docker가 있는 디렉토리에 DockerCompose디렉토리 생성. 1. hgkim@LAPTOP-266L93S4:/usr/bin$ sudo mkdir DockerCompose                       # Docker가 있는 디렉토리에 DockerCompose디렉토리 생성.
줄 82: 줄 52:
 2. hgkim@LAPTOP-266L93S4:/usr/bin/DockerCompose$ sudo vi Dockerfile               # DockerCompose디렉토리로 이동후 도커파일 생성 및 작성. 2. hgkim@LAPTOP-266L93S4:/usr/bin/DockerCompose$ sudo vi Dockerfile               # DockerCompose디렉토리로 이동후 도커파일 생성 및 작성.
 </code> </code>
-<code bash> +<code yaml>
-FROM 만들 이미지 파일 (이미지이름:버전)                                              # FROM 필수.+
  
-추가적으로 필요한 명령어+FROM centos:7.9.2009                                                                            #base 이미지 파일.
  
-</code> +RUN yum -y update\                                                                              #이미지 시시 컨테이너에 설치될 명령어 
-<code bash> +&& yum -y install sudo\ 
-3. hgkim@LAPTOP-266L93S4:/usr/bin/DockerCompose$ sudo vi docker-compose.yml       DockerCompose디렉토리에 도커컴포즈 파일 생성 및 성. +&& yum -y install net-tools\ 
-</code> +&& 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: "3.9"                #버전 + 
-services:                     #컨테이너 설정 +ENTRYPOINT ["/sbin/init", "systemctl start firewalld", "systemctl restart sshd.service", "systemctl start sshd.service", "systemctl status sshd.service" ]  
- apserver:                    #만들 서비스 이름 +#ENTRYPOINT ["실행명령어""인1""인2", ... ] #설치시 /sbin/init을 사용해야될 명령어.
-   build:                     #변경사항이 많아 Dockerfile을 빌드해야할 경우 이용 +
-    context: .                #Dockerfile의 위. '.'은 현재 디렉토리 +
-   ports:                     #Port포워딩할 포드범위 +
-   '22:22' +
-   '7100-7110:7100-7110' +
-   '80:80' +
-   '8080:8080' +
-   user: root                 +
-   privileged: true           #기본적으로는 Unprivileged모드로 실행되며이 모드에서는 시스템 주요 원에 접근할 수 있는 권한이 부족하여특정시스템 원에 접근하기 위해 모드 변경. +
-   container_name: rsa_server #생성될 컨테이너 이름. +
-</code>+
  
-<code bash> 
-4. docker-compose up -d --build                # 도커컴포즈 실행시 도커파일을 빌드 후 백그라운드 실행) 
-5. docker exec -it 컨테이너명 /bin/bash         # 컨테이너 실행. 
 </code> </code>
 +3.DockerBuild - 도커파일을 이미지 파일로 빌드시키는것. 도커컴포즈 파일을 이용하여 도커파일을 빌드하는게 일반적임.
 +  * 이유)도커컴포즈에서 빌드시 도커파일이 변경되어도 변경된 이미지를 빌드하여 사용하지만 도커파일에서 빌드시 새로운 이미지가 생기면 도커컴포즈에 이미지 이름도 바꿔야하기때문임.
 +만약 만든 이미지를 더이상 수정하지 않을꺼라면 아래 명령어를 통해 이미지 생성 가능.<code bash> sudo docker build -t [만들고 싶은 이미지이름] [도커파일위치] </code>
  
 ===도커컴포즈와 도커파일을 통한 활용 방법=== ===도커컴포즈와 도커파일을 통한 활용 방법===
-  * 검색솔루션에 사용할 재사용 가능한 적절한 OS 컨테를 만들 수 있음.+  * 검색솔루션에 사용할 재사용 가능한 적절한 OS 이미지를 만들 수 있음.
   * 검색솔루션 설치(도커 기반) 과정을 줄일 수 있음.   * 검색솔루션 설치(도커 기반) 과정을 줄일 수 있음.
  
 {{tag>치킨5분컷 도커파일 도커파일_명령어}} {{tag>치킨5분컷 도커파일 도커파일_명령어}}
/volume1/web/dokuwiki/data/attic/wiki/3party/docker/도커파일_사용법.1669088143.txt.gz · 마지막으로 수정됨: 2022/11/22 12:35 저자 hgkim