jissue
SSUE's IT World
jissue
전체 방문자
오늘
어제
  • 분류 전체보기 (88)
    • CS (4)
    • 자료구조 (5)
    • 알고리즘 (30)
      • 백준 (28)
      • 프로그래머스 (2)
    • JAVA (0)
    • Spring Boot (0)
    • 가상화 (35)
      • VMware (23)
      • Docker (12)
    • sw 사관학교 정글 (13)
      • TIL (12)
    • 기타 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
jissue

SSUE's IT World

가상화/Docker

[Docker] Dockerfile

2023. 3. 24. 09:17
  • 관리
  • 글쓰기
  • 로그인
  • 로그아웃

Dockerfile ?

① 인프라 정보를 가지고 있는 파일로 컨테이너 구성정보 사용

② teraform 처럼 도커 명령어를 스크립트로 제작 후 이미지화 해서 손 쉽게 실행이 가능한 파일

③ 이미지를 사용하여(FROM) Dockerfile을 이미지화 하기 때문에 레이어 구조(이미지가 겹쳐있음)

​

· 파일 이름은 Dockerfile로 설정 필요

· Dockerfile 은 한 줄에 한 단계로 구성

​

- 도커파일 구성 요소

· 사용할 도커 이미지

· 컨테이너 내 수행할 명령어 / 데몬 실행

· 주석

· 환경변수 등등

​

- 명령어

· FROM 다운할 이미지명 : 이미지를 다운

· RUN : 패키지 설치 시 사용

· LABEL : 이미지 내 주석 달기

· EXPORT : 컨테이너 포트번호 지정

· CMD : 이미지 내 컨테이너


도커의 레이어 구조

실습1) nginx 실행

1. ubuntu 16.04 설치 Dockerfile 제작

sudo vim Dockerfile //Dockerfile은 변하지 x

​

- 내용작성

​

- Dockerfile을 이미지 파일로 build

sudo docker build -t ubuntu-16.04:1.0 /home/test01 // /home/test01에 있는 Dockerfile을 ubuntu-16.04:1.0인 이미지 파일로 생성
sudo docker image ls | grep ubuntu //생성확인

한 줄에 한 단계

​

​

2. nginx를 설치하는 dockerfile 제작

sudo vim Dockerfile

​

- 도커 파일 빌드

sudo docker build -t nginx-16.04:1.0 /home/test01
sudo docker image ls | grep nginx

Dockerfile 내 작성한 명령어가 3줄로 되어 있어 step3로 이루어짐

​

- 이미지명 nginx-16.04 생성

​

​

3. 컨테이너에서 수행 할 명령어 입력 후 컨테이너 실행

sudo vim Dockerfile

· RUN : 이미지 생성시 사용

· CMD : 이미지를 바탕으로 컨테이너 실행 할 때 필요

daemon off : 컨테이너 백그라운드로 실행,어플리케이션은 포그라운드

​

- 이미지 빌드

sudo docker build -t nginx-16.04:2.0 /home/test01

Step 별로 이미지를 가지고 있어서 재 실행 시 빌드 시간이 과거보다 짧아짐 (using cache)

​

- 컨테이너 실행 확인

sudo docker image ls | grep nginx
sudo docker container run -p 80:80 --name nginx_web_01 -d nginx-16.04:2.0 
//빌드한 nginx 이미지를 사용하여 host와 컨테이너 포트번호 80으로 실행

· -d : 백그라운드에서 컨테이너 실행

​


RUN vs CMD

· RUN : 이미지 설치시 필요

· CMD : 이미지를 바탕으로 컨테이너 실행 할 때 필요


실습2) httpd 실행

- 컨테이너 초기화

sudo docker container ps -a
sudo docker container stop nginx_web_01
sudo docker container rum nginx_web_01
sudo docker container ps -a
mv Docker Dock.nginx.16.04 //Dockerfile만 인식하므로 기존 내용 백업 진행
sudo vi Dockerfile

※ Dockerfile 명만 사용 가능하므로 파일 관리 중요

​

- 내용 변경

​

sudo docker build -t httpd:1.0 /home/test01/
sudo docker container ps -a

실습3) Appache로 웹서버 생성

sudo vimm Dockerfile
sudo docker build -t apache2:1.0 /home/test01/

​

sudo docker container run -p 80:80 --name httpd_web_01 -d apache2:1.0
sudo docker image inspect apahe2:1.0 | grep title
 

포트 8080 -> 80으로 수정

Dockerfile 내 LABEL 명령어 추가로 이미지 파일의 주석 설정 가능

'가상화 > Docker' 카테고리의 다른 글

[Docker] Docker compose  (0) 2023.03.24
[Docker] Docker volume  (0) 2023.03.24
[Docker] Docker Network 실습  (0) 2023.03.24
[Docker] Docker Network  (0) 2023.03.24
[Docker] Docker hub  (0) 2023.03.24
    '가상화/Docker' 카테고리의 다른 글
    • [Docker] Docker compose
    • [Docker] Docker volume
    • [Docker] Docker Network 실습
    • [Docker] Docker Network
    jissue
    jissue

    티스토리툴바