AWS Cloud School 13기 61일차

Forever 김·2026년 3월 27일

AWS Cloud School

목록 보기
58/97

TIL

배운 내용

도커이미지

RUN : 컨테이너 이미지 빌드 단계에서 수행되는 명령

말그대로 빌드 될때 수행되는 명령어를 적는다고 생각하면 된다.

RUN <명령어1> && <명령어2> && <명령어3> && <명령어4>..

ex)
RUN apt update -y && apt install -y httpd ifconfig && systemctl restart httpd…

CMD : 컨테이너가 실행되는 단계에서 수행할 명령

CMD 명령어는 Dockerfile에서 맨마지막만 적용되기 때문에 하나만 있어야 한다.
예를 들어

FROM httpd:latest

CMD ["httpd","-D","FOREGROUND"]
#내가 실행하고 싶은 명령을
#띄어쓰기마다 쉼표로 구분해서 쌍따옴표로 묶어주면 된다.
#CMD httpd -D FOREGROUND
root@contem:/docker# docker build -f Dockerfile-cmd -t myhttpd:10 .
# Dockerfile을 Dockerfile-cmd로 작성했기 때문에 -f로 지정해준다.


이렇게 docker ps로 내가 이미지에 등록한 CMD가 수행했는지 확인 할 수 있다.

ENTRYPOINT : CMD와 유사

FROM centos:7
ENTRYPOINT ["sleep"]

이렇게 해서 이미지 빌드하고 컨테이너 실행을 하면

root@contem:/docker# docker build -t entest:2 -f Dockerfile-sleep .
# 이미지빌드

root@contem:/docker# docker run -d --name en entest:2
# 컨테이너 실행


위 이미지 처럼 수행이 되지 않는다. 그래서 다시 실행할 때 command를 넣어주면

root@contem:/docker# docker rm -f en

root@contem:/docker# docker run -d --name en entest:2 infinity
# 이미지오른쪽에 command를 넣어보자. sleep과 어울릴만한.


이렇게 된다.

CMD와의 차이점
CMD : 추가 인자값으로 대체되지만 ENTRYPOINT는 추가 인자로 CMD를 받을 수 있다,

ENV : 환경변수 선언

root@contem:/docker# vi Dockerfile-env
FROM nginx:latest
ENV ENVTEST=test123
root@contem:/docker# docker build -t envtest:1 -f Dockerfile-env .
root@contem:/docker# docker run -it --name env envtest:1 bash

컨테이너 내부에서 echo를 통해 확인하면

test123이 나온다.


컨테이너 레지스트리(Registry)

  1. 내가 만약 나의 도커 허브에 이미지를 업로드(push) 하고 싶다면
    docker build를 레지스트리 주소, 레포지토리, 태그를 포함해서 만들면 된다.
  2. 기존의 이미지를 새로 올리고 싶다면, 기존 이미지를 docker tag 라는 명령으로 복사 해주면 된다.

도커이미지 빌드 후 도커 허브에 push

root@contem:/docker# mkdir reg
root@contem:/docker# cd reg/

root@contem:/docker/reg# vi Dockerfile

간단한 Dockerfile을 작성한다.

FROM httpd:latest
root@contem:/docker/reg# docker build -t <도커ID>/myweb:1 .
# docker login -u <도커ID>로 로그인 후


root@contem:/docker/reg# docker push <도커ID>/myweb:1
# 업로드.


이렇게 나의 docker 허브에 올라왔음을 확인할수있다.

profile
나를 한줄로

0개의 댓글