본문 바로가기
Docker

[Docker] Docker에 대한 이해 및 실습 - httpd

by Johnny's 2023. 4. 11.

Docker 동작 순서

Container를 만들고 배포 → 구동

Container 만들기

Dockerifle → Image → Container

 

1. Dockerfile - Container를 어떻게 만들어야하는지 설명서

- copy files

- install dependencies

- set environment variables

- run setup scripts

 

2. Image

- 어플리케이션을 실행하는데 필요한 code, run time 환경, 시스템 툴, 라이브러리, 모든 세팅들이 포함되어 있음 

- 실행되고있는 어플리케이션 상태를 스냅샷해서 이미지로 만들어줌

- 만들어진 이미지는 변경이 불가

 

3. Container

- 샌드박스처럼 잘 캡쳐해둔 어플리케이션의 이미지를 고립된 환경에서 실행할 수 있는 것

- 각각 동작하는 어플리케이션에서는 새로 생성, 수정 등이 가능함 → 수정하더라도 이미지에 영향을 미치지 않음

 

4. Container 배포 - 이미지 공유

- 로컬머신에서 이미지를 만들어서 Container Registry에 push를 하고, 필요한 서버에서 PULL을 받고 실행

 

Container Registry

Public

- Docker Hub, GitHub Packages, RED HAT quay.io

Private

- Aws, google cloud ,miscrosoft Azure

 

# Docker 실습

Docker Hub에서 Docker image를 받고 컨테이너를 실행해보는 예제

 

1. Docker Hub에서 httpd image 받기

docker pull httpd

* 다운로드한 Images 확인 (리스트 이미지)

docker images

2.  컨테이너 실행 및 확인

실행

docker run httpd
docker run --name secondContainer httpd

확인

docker ps

3. 컨테이너 중지

docker stop b76855931f30

4. 이미지 삭제

docker image를 삭제해보자 (IMAGE ID = dc1a95e13784)

docker rmi dc1a95e13784

 

b76855931f30 컨테이너에서 사용중이라고 에러가 발생한다

해당 내용을 확인해보자

컨테이너를 삭제하고, 다시 이미지를 삭제한다.

컨테이너의 라이프 사이클에 대한 이해가 필요하다.


Port Forwarding, Volume Mount

#1 Port Forwarding

Host : 8888을 Container : 80으로 맵핑

docker run -p 8888:80 httpd

ec2 IP:8888 포트로 접속하면 잘동작하는 것을 확인할 수 있다.

#2 Volume Mount

ec2 해당 경로에 index.html 파일을 만들어준다.

참고로 ec2 환경에서 실습을 하고 있기 때문에 sftp 연결을 해준 상태다.

index.html

실행

docker run -p 8888:80 -v /home/ec2-user/httpdTest:/usr/local/apache2/htdocs httpd

index.html 내용이 잘 출력되는 것 확인


# Dockerfile 활용

 

1. Dockerfile 이미지 만들기 - Dockerfile을 추가해준다.

FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/index.html
EXPOSE 80

Dockerfile 있는 경로에서 아래 명령어를 작성한다.

docker build -t my-httpd .

 

2. 도커파일로 생성된 이미지로 컨테이너 실행하기

이미지가 잘 생성되었는지 확인한다.

docker images

docker run -d -p 8888:80 my-httpd

 

확인

docker ps

 

* 참고

- 원티드(프리온보딩 백엔드 챌린지 4월) - Docker: 나만의 도커 이미지 만들기부터, 클라우드 배포까지! - Github

- 도커 한방에 정리 🐳 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습 (드림코딩 유투브)

- Docker Hub - httpd

댓글