클라우드 42일차

soso·2024년 8월 6일

클라우드 부트캠프

목록 보기
44/77

entrypoint는 cmd와 달리 컨테이너를 실행 시 overwrite가 되지 않음, 하지만 임의로 옵션을 넣어 overwrite 가능
cmd는 내장되어있는 구문이 컨테이너 실행 시 대체 구문이 있다면 overwrite가 될 수 있음

entrypoint는 고정된 실행 파일을 지정하는 데 사용
되며, cmd는 기본적으로 실행할 명령어를 제공하지만, 필요에 따라 실행 시 쉽게 변경할 수 있는 점에서 차이Dockerfile을 작성 후 이미지 빌드대체 구문으로 Dockerfile 내부의 변수가 대체된 것을 확인


이미지를 빌드하는 사람은 listen 포트를 알지만 이미지를 가져다 쓰는 사람은 모름, expose 구문으로 알려줘야 함
외부 서비스와 연결하는 경우에만 내부 포트와 호스트 포트를 바인딩 해줌Dockerfile에 EXPOSE로 명시해주지 않아도 이미 이미지 내에 EXPOSE가 되어 있는 경우가 있음
docker history를 사용해 확인 가능COPY와 ADD는 똑같은 기능이지만 ADD가 추가적인 기능을 더 가지고 있음(file url 사용 가능, 압축된 파일일 시 자동 압축 해제 등)effective 사용자를 변경할 때 USER 사용FROM ubuntu ubuntu 이미지를 기반으로 새로운 이미지를 생성
RUN mkdir -m 1777 /share/share 디렉토리를 생성하고, 디렉토리의 권한을 1777 (모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하고, sticky bit를 설정하여 파일 삭제를 제한)로 설정
RUN touch /share/hello.txt /share 디렉토리에 hello.txt 파일을 생성
RUN useradd student 새로운 사용자 student를 추가
USER student 이후의 명령어들은 student 사용자로 실행
RUN touch /share/student.txt student 사용자로 /share 디렉토리에 student.txt 파일을 생성
CMD ls -l /share 컨테이너가 시작될 때 /share 디렉토리의 내용을 자세히(list) 출력
Dockerfile 최적화
이미지 크기를 줄이기 위해서는 line 수를 줄이자(단계, RUN을 최대한 줄여 최적화)전자는 앞의 명령이 실패해도 뒤의 명령이 수행되지만, 후자는 앞의 명령이 실패하면 중단됨Dockerfile cp 후 수정
\를 줘 그 줄을 파싱하지 않고 다음 줄로 가라는걸 알려줌실행환경에 맞는 fileset을 한다면 빌드하고 실행하는거보다 사이즈가 훨씬 줄어듦컨테이너 디렉토리가 아닌 곳을 사용하기 위해, permenant하게 데이터를 저장하기 위해 사용(컨테이너 디렉토리는 컨테이너가 삭제되면 같이 삭제되기 때문)
컨테이너간 데이터를 sharing하기 위해서도 사용mount하여 연결해서 씀컨테이너가 run이든 stop이든 컨테이너쪽에 있는 파일을 상관없이 호스트쪽에 백업, 호스트쪽에 있는 파일을 컨테이너에 백업도 가능
컨테이너를 지정할 때 id 또는 이름 사용
원본 nginx 이미지와 컨테이너를 비교, 파일들의 변동사항을 한번에 볼 수 있음
A append
C change
D delete
-a author
-m comment
inspect뿐만 아니라 해당 컨테이너의 내의 /etc/hosts 파일에서도 컨테이너 ip 확인 가능

0개의 댓글