Docker - commit, build

SeungTaek·2021년 9월 18일
1

도커(Docker)

목록 보기
3/3
post-thumbnail

본 게시물은 스스로의 공부를 위한 글입니다.
틀린 내용이 있을 수 있습니다.


📒 도커 이미지 만들고 배포하기

  • 예를 들어 내가 현재 사용중인 도커 우분투에 git을 설치한 후, 이를 새로운 이미지로 만들고 싶을 때 docker commit을 사용한다.
  • docker ps로 도커 Name 확인
  • docker commit [도커NAME] [내가 만든 이미지 이름 지정]
  • docker imags로 새로운 이미지 확인 가능

📌 예제 - 우분투에 git 설치 후 도커 이미지로 commit 해보기

$ docker run -it --name git ubuntu:latest bash //우분투 실행
root@2f8bfff679f9:/ git 
bash: git: command not found //현재 git이 설치되어 있지 않다

root@2f8bfff679f9:/ apt-get update 
root@2f8bfff679f9:/ apt-get install -y git //git 설치
root@2f8bfff679f9:/ git --version 
git version 2.17.1 //git이 설치되었다.
  • 다른 터미널창 또는 도커를 빠저나온 후 아래와 같이 진행한다.
$ docker images | grep ubuntu 
ubuntu latest cf0f3ca922e0 5 days ago 64.2MB //내가 처음에 설치한 오리지널 우분투 이미지만 존재

$ docker commit git ubuntu:git //git이란 이름의 컨테이너를 ubuntu:git이름의 이미지 파일로 생성

$docker images | grep ubuntu //새로 만들어진것을 확인할 수 있다.
ubuntu:git f95008381e22 17 seconds ago 186MB 
ubuntu latest cf0f3ca922e0 5 days ago 64.2MB

📌 도커 빌드

  • 위에서 살펴본 도커 commit 처럼 build도 새로운 도커 이미지를 생성하는데 사용한다.

  • commit vs build

    • 실행중인 container에서 image를 만들땐 commit

    • Dockerfile을 통해서 image를 만들 땐 build

    • 결과적으론 image를 만드는 건 똑같지만, commit은 백업느낌, build는 생성하는 느낌이다.

  • docker build -t [이름공간]/[이미지이름]:[태그] .

    • 현재 디렉토리의 Dockerfile로 빌드
      • -f <Dockerfile 위치> 옵션을 사용해 다른 위치의 Dockerfile 파일 사용 가능
      • -t 명령어로 도커 이미지 이름을 지정가능
      • {네임스페이스}/{이미지이름}:{태그} 형식
    • 마지막에는 빌드 컨텍스트 위치를 지정
      • 현재 디렉터리를 의미하는 점(.)을 주로 사용
      • 필요한 경우 다른 디렉터리를 지정할 수도 있음

📌 도커 파일 작성

  • FROM [--platform=<platform>] <image>[:<tag>] [AS <name>] 베이스 이미지 지정

    • 예시
      • FROM ubuntu:latest
      • FROM node:12
      • FROM python:3
  • COPY <src> <dest> 이미지에 파일 복사

    • COPY index.html /var/www/html/
    • COPY ./app /usr/src/app
  • RUN <command> 명령어 실행.

    • 컨테이너가 생성될 때 명령 수행. 가능한 한 줄로 작성(&& 이용)
    • 사용자 입력을 받아야 하는 과정이 있다면 컨테이너가 생성되지 않는다(apt install -y 등을 사용해서 사용자 입력을 받지 않게 해야한다.)
    • RUN apt-get update
    • RUN npm install
  • WORKDIR /path/to/workdir 작업 디렉토리 변경

    • WORKDIR /app
  • EXPOSE <포트번호> 컨테이너에서 사용하는 포트 정보

    • EXPOSE 8000
  • CMD ["executable","param1","param2"] , CMD command param1 param2 컨테이너 매번 실행시 수행할 명령어. 하나의 CMD만 작성 가능하며, 중복일 경우 맨 마지막만 유효하다.

    • CMD ["node", "app.js"]
    • `CMD node app.js

📌 도커 파일 예시

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html //경로가 있다면 이동, 없다면 생성
CMD ["python3", "-u", "-m", "http.server"]

📒 도커 허브에 이미지 push, pull 하기

docker login 
docker push {ID}/example 
docker pull {ID}/example

Reference

생활코딩-도커
인프런 초보를 위한 도커 안내서(subicura)

profile
I Think So!

0개의 댓글