1. Dockerfile 작성
Docker Build를 위해 별도 디렉토리를 만들고, ubuntu 이미지를 준비한다.
[devops@centos ~]$ mkdir example [devops@centos ~]$ cd example/ [devops@centos example]$ ls -rlt total 0 [devops@centos ~]$ sudo docker pull ubuntu [devops@centos example]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu latest 8e428cff54c8 4 days ago 72.9 MB |
Dockerfile은 Docker 이미지 설정 파일이다. Dockerfile에 설정된 내용대로 이미지를 생성한다.
[devops@centos example]$ vi Dockerfile
devops@example.com>[devops@centos example]$ cat Dockerfile FROM ubuntu:latest MAINTAINER devops <devops@example.com> RUN apt-get update RUN apt-get install -y nginx RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf RUN chown -R www-data:www-data /var/lib/nginx VOLUME ["/data", "/etc/nginx/site-enabled", "/var/log/nginx"] WORKDIR /etc/nginx CMD ["nginx"] EXPOSE 80 EXPOSE 443 |
- FROM : Base 이미지를 설정한다. Docker 이미지는 기존에 만들어진 이미지를 기반으로 생성한다ㅏ. <이미지 이름>:<태그> 형식으로 설정한다.
- MAINTAINER : 메인테이너 정보
- RUN : 쉘 스크립트나 명령을 수행한다. (이미지 생성 중에는 입력을 받을 수 없으므로, -y옵션을 사용한다.)
- VOLUME : 호스트와 공유할 디렉토리 목록이다.
- CMD : 컨테이너가 실행 되었을 때 실행할 파일 또는 쉘 스크립트
- WORKDIR : CMD에서 설정한 실행 파일이 실행될 디렉터리
- EXPOSE : 호스트와 연결할 포트
2. docker build
Dockerfile이 저장된 디렉터리에서 docker build를 수행한다.
[devops@centos example]$ sudo docker build --tag hello:0.1 . [devops@centos example]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello 0.1 c40f42dc1a82 9 seconds ago 160 MB docker.io/ubuntu latest 8e428cff54c8 4 days ago 72.9 MB |
Docker 이미지가 hello:0.1로 생성된 것을 확인할 수 있다.
[devops@centos example]$ sudo docker run --name hello-nginx -d -p 80:80 -v /root/data:/data hello:0.1 |
- -d : 컨테이너를 백그라운드로 실행
- -p 80:80 : 호스트의 80번 포트와 컨테이너의 80번 포트를 연결
- -v /root/data:/data : 호스트의 /root/data 디렉터리를 컨테이너의 /data디렉터리에 연결
nginx가 기동되었기 때문에, 웹 브라우저를 띄우고 테스트 해본다.
호스트 IP로 접속 했을 때, 정상적으로 포트포워딩 되어 nginx 페이지가 뜨는 것을 확인할 수 있다.
'IT > Docker' 카테고리의 다른 글
[Docker] 기본 사용 명령어 (0) | 2021.03.30 |
---|---|
[Docker] 설치 및 기본 명령어 (0) | 2021.03.25 |
[Docker] Image & Container (0) | 2021.03.25 |
[Docker] Container? (0) | 2021.03.24 |