commit은 이미 사용하고 있는 컨테이너를 이미지로 만드는 것
개인적으로 백업이라고 생각했습니다.
build는 도커파일을 통해서 만들고 싶은 이미지를 구체적으로 시간의 순서에 따라서 기록 해서
이미지를 생성하는 느낌 그래서 배포 할때 사용을 하는 것 같습니다.
commit 방식
먼저 저는 실습을 위해서 httpd 이미지를 받았습니다.
docker pull httpd
그러면 다운이 시작되고
docker images
docker images로 잘 다운 되는지 확인 하면 잘 다운 된것을 확인 할 수 있습니다.
docker run -it --name test-web bash
아래 그림처럼 test-web이라는 컨테이너가 생성이 됩니다.
잘만들어 졌으면 exit라는 명령어로 종료하고 호스트로 넘어옵니다.
docker ps -a
위의 명령어를 실행하면
컨테이너가 실행중이 아니여도 확인 할수 있습니다.
이제 commit만 하면 됩니다.
이미지 커밋
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
이게 도커 공식 홈페이지에 나와 있는 commit 명령어 입니다. 이런식으로 하면 됩니다.
ex)docker commit test-web egoing:httpd
docker images
확인하면
위 그림처럼 egoing이라는 이름으로 잘만들어진 걸 확인 할 수 있습니다.
build 방식
Dockerfile을 사용하여 빌드하는 방법
commit 방식 보다는 이 방법을 주로 사용
docker run --name web-server -it ubuntu:20.04
우분투 20.04 버젼으로 web-server 대화형 컨테이너로 실행
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 ["index.html", "."]
CMD [ "python3", "-u", "-m", "http.server"]
- FROM : 이미지를 생성할 때 사용할 기반 이미지를 지정한다.
- RUN : 이미지를 생성할 때 실행할 코드를 지정한다. 예제에서는 패키지를 설치하고 파일 권한을 변경하기 위해 RUN을 사용했다.
- WORKDIR : 작업 디렉토리를 지정한다. 해당 디렉토리가 없으면 새로 생성한다. 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다.
도커파일이 있는 경로에서
docker build -t web-server-build .
web-server-build라는 이미지를 빌드한다.
뒤에 . 은 현재 경로를 나타낸다.
이런식으로하면 이미지가 빌드가 된다.
docker rm --force web-server;
docker run -p 8888:8000 --name web-server web-server-build;
위에서 미리 만든 web-server는 삭제하고 다시 실행시킨다.
이러면 이미지가 빌드되고 python3가 컨테이너에 다운되고 python3 웹서버가 실행 된다.
'가상화 기술과 관리 > Docker' 카테고리의 다른 글
Docker 노트정리4 (docker-compose) (0) | 2024.02.24 |
---|---|
Docker 노트정리3 (도커 볼륨) (1) | 2024.02.17 |
Docker - Java 개발자를 위한 완벽 실습 과정 노트정리2 (도커 네트워크) (1) | 2024.01.13 |
Docker노트정리 commit, build(jar, war) (0) | 2023.12.25 |
[Docker compose] 도커 컴포즈 정리 (0) | 2023.12.09 |