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' 카테고리의 다른 글
[Docker] 나만의 도커파일 & 이미지 생성(EC2 환경) (0) | 2023.04.15 |
---|---|
[Docker] 도커를 활용하는 클라우드 서비스 (0) | 2023.04.13 |
[Docker] Docker Compose & 실습 (2) | 2023.04.11 |
[Docker] Docker 설치 방법, Docker CLI 정리 (0) | 2023.04.10 |
[Docker] Docker 기본 개념 및 구조 & 컨테이너 기술 (0) | 2023.04.09 |
댓글