[42Seoul/ft_server] docker 와 docker file
1. Docker
도커는 리눅스의 응용 프로그램들을 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다.
나는 vmware와 비슷한 역할을 하는 것으로 이해했다. 차이가 있다면 도커가 더 가벼운 용량, 빠른 실행 속도 정도로 이야기 할 수 있다.
차이가 생기는 이유는 vmware는 하드웨어 수준에서 가상화가 이루어지고 docker 는 리눅스에서 운영체제 수준 가상화의 추상화 및 자동화 계층을 추가적으로 제공한다.
vmware와 같은 가상머신은 하드웨어 수준에서 가상화가 이루어지므로 각각의 가상머신마다 OS를 설치해야 한다. 따라서 가상머신 파일에는 os가 포함되어 용량이 커지고 부팅이 느릴 수 있다.
Docker
도커는 OS 수준에서 추상화가 이루어지는 것으로 하드웨어를 분리하지 않고 하나의 머신 위에서 동작하며 OS 커널을 공유한다.
도커는 매우 가볍기 때문에, 하나의 서버나 가상 머신이 여러 컨테이너들을 동시에 구동할 수 있다.
도커는 컨테이너를 사용하여 리소스를 격리시키고, 서비스를 제한시키며, 프로세스를 예비할 수 있다.
이를 통해 자신만의 프로세스 id 공간, 파일 시스템 구조, 네트워크 인터페이스를 가지고 운영체제에 대해 개인화된 관점을 갖게 한다.
Docker container | Docker Image |
다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스 제공 호스트 OS와 운영체제 커널을 공유하여 실행이 빠르다 |
컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것으로 상태값을 가지지 않고, 변하지 않음 컨테이너는 이미지를 실행한 상태로가 볼 수 있고, 추가되거나 변하는 것은 컨테이너에 저장됨. 같은 이미지에서 여러개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남음 |
cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker정리/
2. Docker File
도커 이미지를 만들기 위한 설정 파일이다. 여러가지 명령어를 토대로 Docker file 을 작성하면 설정된 내용대로 docker image 를 만들수 있다.
# Dockerfile
FROM debian:buster
# image에 메타데이터 추가
LABEL maintainer "yoahn<yoahn@student.42seoul.kr>"
# 쉘 명령어 실행
RUN apt-get update && apt-get install -y \
nginx \
mariadb-server \
php-mysql \
php-mbstring \
openssl \
vim \
wget \
php7.3-fpm
COPY ./srcs/run.sh ./
COPY ./srcs/default ./tmp
COPY ./srcs/wp-config.php ./tmp
COPY ./srcs/config.inc.php ./tmp
EXPOSE 80 443
CMD bash run.sh
- FROM
도커에 설치할 OS라고 생각하면 될 것 같다 - LABEL
메타데이터를 추가하기 위한 것 - RUN
쉘 명령어를 실행하고 결과를 커밋함 - COPY
호스트 OS의 파일 또는 디렉토리를 컨테이너 안의 경로로 복사 - EXPOSE
이 컨테이너가 해당 포트를 사용할 예정임을 사용자에게 알려줌
실제 포트를 열기 위해서는 docker run 에서 -p옵션 사용 - CMD
생성된 컨테이너를 실행할 명령어 지정
docker run 하면 실행되는 명령어들이 들어있다.
www.docker.com/resources/what-container
khj93.tistory.com/entry/Docker-Docker-File-작성하기-명령어
hoony-gunputer.tistory.com/entry/docker-file-작성
velog.io/@hidaehyunlee/ftserver-총-정리-도커-설치부터-워드프레스-구축까지