본문 바로가기
devops/Docker 강좌📌인프런

생활코딩 도커 강좌 #2 -이미지 만들기

by IMSfromSeoul 2022. 2. 28.

📌 도입

dockerhub 같은 곳에서 application을 구동하는데 필요한 image를 다운 받을 것이다.

image는 그 자체로 실행할 수 없기 때문에 run 명령어를 통해서 컨테이너를 만들고, 컨테이너를 통해 해당 application을 실행할 것이다.

그런데 image를 다운받는 것뿐만 아니라, image를 생성하고 싶을 수 있다.

이 때 만들 수 있는 방법은 2가지가 있다.

  • commit 명령어를 이용하는 방법
    • container에서 commit을 하면 image가 만들어진다.
    • 이는 해당 컨테이너에 대한 백업의 성격이 강하다.
  • Dockerfile로부터 image를 생성하는 방법
    • Dockerfile에 대해 build 명령어를 통해 image를 생성할 수 있다.
    • 이는 생성에 대한 성격이 강하다.

📌 실습

▸ 초기화

일단 현재 컨테이너와 이미지들이 차 있으므로 모두 삭제하고 시작하자.

  • docker rm -f $(docker ps -aq)
  • docker rmi --force $(docker images -q)

📚 컨테이너 → 이미지 생성

그 다음 ubuntu image를 설치하자.

  • docker run --name web-server -it ubuntu:20.04 

그러고 나서 위의 컨테이너를 통해 새로운 이미지를 생성할 수 있다.

  • docker commit web-server web-server-commit

 

📚 Dockerfile → image 생성

  • docker build -t 이름 .

 

📚 python 설치 - 터미널 이용

python에 내장돼 있는 web-server를 이용하기 위해 python을 설치해주자

아까 docker run --name web-server -it ubuntu:20.04에서, -it 옵션을 주었기 때문에 해당 터미널로 접속이 됐다.

 

해당 터미널에서 python을 설치하기 위해 아래 두가지 명령어를 입력해주자.

  • apt update
  • apt install python3

그러면 파이썬이 설치된다.

 

📚 python 설치 - Dockerfile 이용

FROM ubuntu:20.04
RUN apt update
RUN apt install python3

위처럼 명령어를 적어주면 된다.

그런데 RUN 명령어는 실행될 때마다 Layer가 추가되기 때문에 위처럼 실행하면 비효율적이다.

FROM ubuntu:20.04
RUN apt update && apt install -y python3

위처럼 && 을 이용해서 명령어를 연결할 수 있다.

또한 apt install 을 했을 때 yes 를 입력하기 위해 -y 옵션을 준다.

 

📚 디렉토리 - 터미널

터미널 창에서 디렉토리를 만들고 이동해보자.

  • mkdir -p /var/www/html
  • cd /var/www/html

-p option은 없으면 생성하라는 옵션이다.

 

📚 디렉토리 -Dockerfile

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html

WORKDIR을 지정해주면 된다.

 

📚 파일 만들기 - 터미널

  • echo "hello, <strong>Docker</strong>" > index.html

 

📚 파일 만들기 - Dockerfile

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html
RUN echo "hello, <strong>Docker</strong>" > index.html

다른 방법으로, COPY를 사용할 수 있다.

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html
COPY ["index.html","."]

 

📚 파이썬 실행하기 - 터미널

  • python -m http.server 

 

📚 파이썬 실행하기 - Dockerfile

FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html
COPY ["index.html","."]
CMD ["python3","-u","-m","http.server"]

아래의 명령어로 위의 Dockerfile을 빌드해보자.

  • docker build -t webserver-build .
  • docker rm --force web-server
    • 혹시 web-server라는 이름을 가진 컨테이너가 있다면 삭제해준다.
  • docker run -p 8888:8000 --name web-server webserver-build
    • 만약 마지막에 pwd, ls 와 같은 명령어를 주면 Dockerfile의 CMD 명령어가 무시되고 해당 명령어가 실행된다.

 

📚 RUN 과 CMD

  • RUN
    • 빌드가 실행되는 시점에 실행되는 명령어
    • RUN에 명시한 명령어는 이미지에 반영
  • CMD
    • 컨테이너 실행될 때 실행되는 명령어
    • CMD에 명시한 명령어는 컨테이너에 반영

 


이미지 만들기
- ( https://www.youtube.com/watch?v=0kQC19w0gTI )

이미지 삭제
- ( https://www.lainyzine.com/ko/article/how-to-remove-all-docker-contaniers-and-images/ )

댓글