이번에 다룰 내용은 Dockerfile을 이용해 이미지를 만드는 것입니다.
"Dockerhub에서 불러오면 되는 거 아니냐?" 하고 생각하실 수 있지만, Dockerfile 을 사용한다면 layer를 쌓을 수 있다는 점에서 유용합니다.
가령 Dockerhub에서 torch 이미지를 불러온 뒤 그냥 사용할 수도 있지만, torch는 1.7로, numpy는 1.1로 설정하고 싶다면 torch1.7을 기반으로 numpy 버전을 변경해준다던가 하는 것들이 가능해집니다.
본인이 수행해야 할 task 에 맞게 이미지를 설계하는 것이 가능해집니다.
이번 포스팅에서는 가볍게 Dockerfile을 만들고, 이를 빌드해 이미지를 만들고, 이것을 dockerhub에 push 하는 방법에 대해 알아보도록 하겠습니다.
이번에 만들어볼 dockerfile의 base 이미지는 docker/whalesay 입니다.
Dockerfile에 자주 쓰이는 명령어들을 필요하진 않지만 종류별로 써보았습니다.
한줄 한줄 보며 의미를 파악해보겠습니다
# USAGE
EXPOSE <port> [<port>/<protocol>...]
The EXPOSE instruction informs Docker that the container listens on the specified network ports at runtime. You can specify whether the port listens on TCP or UDP, and the default is TCP if the protocol is not specified.
# USAGE
ENV <key>=<value> ...
The ENV instruction sets the environment variable <key> to the value <value>.
# USAGE
ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
The ADD instruction copies new files, directories or remote file URLs from <src> and adds them to the filesystem of the image at the path <dest>.
# USAGE
COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
The COPY instruction copies new files or directories from <src> and adds them to the filesystem of the container at the path <dest>.
# USAGE
RUN <command>
RUN ["executable", "param1", "param2"]
The RUN instruction will execute any commands in a new layer on top of the current image and commit the results. The resulting committed image will be used for the next step in the Dockerfile.
# USAGE
ENTRYPOINT ["executable", "param1", "param2"]
An ENTRYPOINT allows you to configure a container that will run as an executable.
CMD vs RUN vs ENTRYPOINT
# USAGE
WORKDIR /path/to/workdir
The WORKDIR instruction sets the working directory for any RUN, CMD, ENTRYPOINT, COPY and ADD instructions that follow it in the Dockerfile. If the WORKDIR doesn’t exist, it will be created even if it’s not used in any subsequent Dockerfile instruction.
docker build -t test .
docker push <username>/>image name>
과 같이 입력해주시면 되겠습니다.docker documentation
Dockerfile의 ADD와 COPY의 차이
understanding-dockerfile
[내가 한 거 기록하는 Docker]02. 도커 이미지와 docker hub? (0) | 2021.07.24 |
---|---|
[내가 한 거 기록하는 Docker]01. 도커 설치 (0) | 2021.07.23 |
[머신러닝 엔지니어 실무]02. 머신러닝 파이프라인 단계 (0) | 2021.07.22 |
[머신러닝 엔지니어 실무]01. 머신러닝 파이프라인의 이해 1 (1) | 2021.07.20 |
댓글 영역