![[Docker/기초] Docker File 만들기 (1)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7RRct%2FbtsK6xsmdX1%2FPPrUJxTkFCkSZIB5cayOD0%2Fimg.png)
이번글의 docker 실행 방식은 다음을 따른다.
- DockerFile을 만들어서 커스텀 Dockerfile 만들기
이떄 기본 이미지를 dockerhub에서 받아오고 커스터마이징 한다. - 1번에서 만든 Dockerfile을 사용해서 docker-image 빌드하기
- network 설정 추가 알아보기
- docker-compose 명령어
이번글에서 설명하는 내용은 1번이다.
1. Dockerfile 만들어서 커스텀 Dockerfile 만들기
Docker Hub 이미지를 받아와서 커스터마이징 하기
Dockerfile을 커스터마이징 할때 기본적인 image파일은 dockerhub를 통해서 받아오는 것이 편리하다. 직접 만들어도되지만 이미 사람들이 만들어둔 파일을 사용하는 것도 좋다.
From
베이스 이미지를 설정한다.
# Step 1: 베이스 이미지 설정
FROM ubuntu:22.04
ubuntu 22.04 버전을 받아온다.
Run
컨테이너 내부에서 명령어를 실행한다.
# Step 2: 필요한 패키지 설치
RUN apt-get update && apt-get install -y \
tzdata \
curl \
vim \
&& rm -rf /var/lib/apt/lists/*
기본적인 설정을 할수 있다.
명령어를 RUN을 통해서 입력할 수 있다.
원하는 방식대로 수정할 수 있다.
CMD
컨테이너가 시작될 때 실행할 기본 명령어를 설정할 수있다.
CMD ["bash"]
기본적으로 실행되는 곳을 지정하는 느낌이다. 위코드는 셸을 기본으로 시작하라는 명령어이다.
ENTRYPOINT
파일 혹은 디렉토리를 컨테이너 내부로 복사한다.
ENTRYPOINT ["echo"]
Copy
파일 혹은 디렉토리를 컨테이너 내부로 복사한다.
COPY my_script.sh /usr/local/bin/
Add
Copy와 비슷하지만 URL을 통한 다운로드 혹은 압축 파일을 해제 가능하다.
ADD https://example.com/app.tar.gz /app/
WORKDIR
명령어 실행 기준 디렉토리를 설정한다.
WORKDIR /app
ENV
환경 변수를 설정한다.
ENV APP_ENV production
ENV TZ=Asia/Seoul
APP_ENV라는 환경변수 key와 production이라는 value로 저장한다.
TZ같은 시간을 지정할 수 있다.
EXPOSE
컨테이너에서 사용할 포트를 지정한다.
EXPOSE 8080
docker-compose를 사용해서 여러 프로그램이랑 같이돌릴경우 설정을 잘 하지 않는다.
VOLUME
호스트와 컨테이너 간의 디렉토리 공유 설정을 진행한다.
VOLUME /data
LABEL
이미지에 메타 데이터를 추가할때 사용한다.
LABEL maintainer="admin@example.com"
USER
컨테이너가 실행되는 동안 사용할 기본 사용자 또는 그룹을 설정한다.
USER <username>[:<group>]
주로 RUN명령어로 같이 사용하게 된다.
지정을 하지 않을경우 root user로 자동 실행이 될확률이 높은데 이는 보안 취약점을 만들수 있다.
# 패키지 업데이트 및 sudo 설치
RUN apt-get update && apt-get install -y sudo
# appuser 계정 생성 및 홈 디렉토리 설정
RUN useradd -ms /bin/bash appuser
# appuser에게 sudo 권한 부여
RUN echo "appuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# 기본 사용자 설정
USER appuser
위에는 예시코드인데 sudo권한을 가진 root user로 apt-get같은 명령을 진행해 준뒤 기본사용자를 생성하고 할당하는 느낌으로 사용하게 된다.
최종코드
# 우분투 베이스 이미지
FROM ubuntu:20.04
# 패키지 업데이트 및 sudo 설치
RUN apt-get update && apt-get install -y sudo
# appuser 계정 생성 및 홈 디렉토리 설정
RUN useradd -ms /bin/bash appuser
# appuser에게 sudo 권한 부여
RUN echo "appuser ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
# 기본 사용자 설정
USER appuser
# 작업 디렉토리 설정
WORKDIR /home/appuser
# 환경 변수 설정
ENV APP_ENV=production
# 실행할 기본 명령어
CMD ["bash"]
이런식으로 dockerfile을 만들수 있다.
dockerfile만을 가지고 docker 명령어로 컨테이너를 생성할 수 있으나 다른 설정을 더 추가해 줄수 있는 docker-compose 설정도 배워보자
만든 dockerfile compose로 실행시켜 보기
[Docker/기초] Docker-comopse 파일 만들기 (version 3) (2)
이번글의 docker 실행 방식은 다음을 따른다.DockerFile을 만들어서 커스텀 Dockerfile 만들기이떄 기본 이미지를 dockerhub에서 받아오고 커스터마이징 한다.1번에서 만든 Dockerfile을 사용해서 docker-image
naturecancoding.tistory.com
'Deployment > Docker 기초' 카테고리의 다른 글
[Docker/기초] Docker 네트워크 (3) (0) | 2024.12.05 |
---|---|
[Docker/기초] Docker-comopse 파일 만들기 (version 3) (2) (0) | 2024.12.05 |
[Docker/기초] Volume (0) | 2024.02.15 |
[Docker/기초] Docker 상위 커맨드 ls 정리 (0) | 2024.02.14 |
[Docker/기초] Docker 커맨드, 옵션 정리 (0) | 2024.02.14 |
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간