MAC OS 기반에서 Docker 실습을 진행 해본다.
MAC 용 Docker 설치 : https://hub.docker.com/editions/community/docker-ce-desktop-mac/
ubuntu 이미지에 apache2를 설치하여 웹 서버 구축 > Hello Nora 출력하기
[ docker commit 명령어로 이미지 생성 ]
docker run -it --rm --name ubuntu_apache ubuntu:18.04
apt-get updateapt-get install -y apache2
ctrl + p + q를 눌러 컨테이너를 중지시키지 않고 빠져나오기
docker commit 을 통해 현재 컨테이너의 상태를 그대로 이미지로 정의
docker commit -a "ha0kim" -m "install apache2" ubuntu_apache ubuntu_apache:latest
-a는 이미지를 만든 사람의 정보를 추가하는 옵션이고, -m은 커밋 메시지를 기술하는 옵션이다. 그 뒤에는 컨테이너 ID 또는 이름을 입력하고 마지막으로 우리가 정의한 이미지 이름과 태그를 적는다.
docker images 명령어를 통해 image 생성 확인
컨테이너 실행
docker run -it --rm -p 8080:80 --name ubuntu_apache ubuntu_apache:latest
apache2 실행service apache2 start
http://localhost:8080/ 페이지 확인
웹 페이지 추가
cd /var/www/htmlecho "<h1>Hello Nora</h1>" > hello.html
docker commit 을 통해 현재 컨테이너의 상태를 그대로 이미지로 정의
docker commit -a "ha0kim" -m "add webpage" ha0kim_apache ha0kim_apache:latest
ubuntu_apache 와 ha0kim_apache 를 docker history 명령어로 비교하면 이미지 계층화를 확인할 수 있다.
위 작업을 docker file을 구현하여 더 간단하게 작업할 수 있다.
[ docker file로 이미지 생성 ]
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install -y apache2
WORKDIR /var/www/html
RUN echo "<h1>HELLO NORA</h1>" > hello.html
EXPOSE 80
CMD ["apachectl", "-DFOREGROUND"]
-t 옵션은 --tag 옵션으로 이미지의 이름과 태그를 설정하는 옵션이다. 태그는 생략하게 되면 latest 라고 설정 되며, 맨 마지막의 점은 컨텍스트 경로이다.
만약 파일 명이 Dockerfile이 아니라면 -f 옵션을 통해서 Dockerfile을 지정해줘야한다.
빌드 과정에서 에러가 없었다면 아래와 같은 문구를 확인하실 수 있을 겁니다.
brew install --cask docker 후, docker ps 명령어로 ‘Docker is running’ 상태인지 확인