배경 나도 도커 이미지를 만들고 싶다!
이때 사용할 수 있는 방법은 총 2개가 있는다
1. container commit을 통한 이미지 제작
2. Dockerfile을 바탕으로 build하여 이미지 제작
commit과 Docker의 차이는?
commit은 이미 내가 사용하고 있는 container가 있는 경우, 약간 백업이랑 비슷한 느낌
build는 Dockerfile을 통해서 원하는 조건에 맞는 이미지를 생성하는 느낌

사실 백업이라는 표현에 100% 동의하지는 않는다. 다만 commit의 경우 container를 원하는 기능에 맞게 수정하고 다시 이미지를 만들었을때, 차후 독립된 기능의 컨테이너를 만들 수 있다는 점에서 백업과 비슷한 지점이 분명히 있다. 따라서 이와 관련하여 우분투 이미지에 깃을 설치하고 이를 다시 이미지로 만들어 독립된 컨테이너를 만드는 연습을 하며 사용과정을 정리하려고 한다.
# 최신 우분투 이미지 가져오기
docker pull ubuntu
# 컨테이너 만들어줘 이름은 my-ubuntu 인터렉티브하게 수정할거고 bash를 이용할거야
docker run -it --name my-ubuntu ubuntu bash
#컨테이너 안에 들어와서 apt 업데이트
root@7d18d28c5677:/# apt update
# git 설치하기
root@7d18d28c5677:/# apt install git
# my-ubuntu 라는 컨테이너를 egoing이라는 REPO에 ubuntu-git이라는 태그로 commit
docker commit my-ubuntu egoing:ubuntu-git
# python 이라는 이름으로 컨테이너 열기
docker run -it --name python egoing:ubuntu-git bash
# apt 업데이트와 파이썬 설치
root@3e70018f2551:/# apt update && apt install python3
이런 식으로 독립된 컨테이너를 만들어낼 수 있다.
commit과 다르게 Dockerfile을 Build 하는 방법은 조금 더 정해진 순서에 따라 동작하길 원하는 방법에 적용할 때 적용하면 좋다고 여겨진다.
이 경우에는 Dockerfile을 만들어서 작업을 진행할 수 있다.
FROM ubuntu:20.04
RUN apt update && apt install -y python3
WORKDIR /var/www/html
CMD ["python3", "-u", "-m", "http.server"]
유의 할점은 다음과 같다.
1. Dockerfile은 FROM으로 시작한다. os는 우분투 20.04
2. RUN 명령을 통해 apt 업데이트와 python3을 설치한다.
3. 작업 경로는 /var/www/html 이다.
4. CMD 명령을 통해 python3로 버퍼링 없이(-u), http.server를 모듈형태로 설치한다.
이렇게 Dockerfile을 작성한다.
수행하게 되는 명령은 다음과 같다
docker build -t web-server-build .;
docker rm --force web-server;
docker run -p 8888:8000 --name web-server web-server-build;
같은 경로에 있는 Dockerfile을 통해 build하고, web-server라는 이름의 컨테이너가 있는 경우 삭제한다. 이후 포트포워딩을 하여 웹서버를 build 한다