OS: 윈도우 11
도커 데스크톱 사용
Dockerfile(도커 파일) 생성해서 이미지 생성, 컨테이너 빌드하기
# 기본 이미지로 nginx 최신 버전 사용
FROM nginx:latest
# (선택적) 호스트 머신의 파일/디렉토리를 컨테이너의 지정된 경로로 복사
# 이를 통해 커스텀 Nginx 설정 파일이나 웹 사이트의 정적 파일을 컨테이너에 추가할 수 있음
# COPY ./your-custom-nginx-config.conf /etc/nginx/nginx.conf
# COPY ./your-website-static-files /usr/share/nginx/html
# Nginx가 포트 80을 사용하도록 설정 (기본값이므로 이 줄은 생략해도 됩니다)
EXPOSE 80
# Nginx 서비스 실행 (Nginx 이미지의 기본 CMD를 사용하므로 이 줄은 생략 가능)
CMD ["nginx", "-g", "daemon off;"]
이미지 및 컨테이너 사양
컨테이너 이름 | 이미지 | 이미지 이름 | 포트 |
my-running-nginx | nginx:latest | my-nginx | 80 |
Docker 이미지 빌드
도커 파일이 위치한 디렉토리로 이동해 다음 명령어를 실행하여 Docker 이미지를 빌드한다.
docker build -t my-nginx . #여기서 .은 현재 디렉토리에 도커파일이 있음을 의미
이때 주의해야 될 사항은 도커 파일을 Dockerfile이라고 정확히 명명 해야 된다는 점이다. 도커 파일은 대소문자를 구분한다. 파일 이름이 정확히 DockerFile이나 dockerfile 등 잘못 지정했는지 확인하자.

이미지가 빌드 되었으면 다음 명령어로 Nginx 컨테이너를 실행한다.
docker run --name <컨테이너 이름> -d -p <포트> <이미지 이름>
필자는 다음과 같이 이름을 지어 컨테이너를 생성/실행했다.
docker run --name my-running-nginx -d -p 80:80 my-nginx
브라우저에서 http://localhost/로 접속해보자

도커 데스크톱을 확인해보면 컨테이너가 생성되어 실행중인 것을 확인할 수 있다.

Docker 로컬 레지스트리 생성 & 이미지 푸시하기
우리 근본으로 돌아가서, 지금까지 컨테이너를 만들기 위해 이미지를 내려받고 내려받은 이미지로부터 컨테이너를 만들었다.
그럼 그 이미지들은 어디서 다운로드를 받은걸까?
우리가 지금껏 내려받은 이미지들은 도커 허브라는 곳에서 다운받은 것이다.
이미지를 배포하는 장소를 도커 레지스트리라고 한다. 일반으로 배포하든 비공개든 상관없이 이미지가 배포되는 곳은 모두 도커 레지스트리이다.
도커 허브는 도커 제작사에서 운영하는 공식 도커 레지스트리다.
아파치나 톰캣, MaiaDB 등의 공식 이미지 모두가 제작사가 도커 허브에 참여해 도커 허브에서 이미지를 배포한 것이고, 우리는 그것을 내려받아 사용한 것이다.
필자가 이번에는 로컬 레지스트리를 만들고 거기에서 nginx 이미지를 만들어서 배포하고, 컨테이너를 빌드하는 과정 모두 보여주겠다.
Docker로 이미지를 빌드하고 Nginx 기본 페이지를 띄워보자. 그리고 로컬 레지스트리를 생성하고 레포지토리에 우리의 이미지를 푸시할 것이다.
Docker 레지스트리를 본인의 로컬 컴퓨터에 생성하고 방금 생성한 nginx 이미지를 푸시하겠다.
레지스트리 생성한다. 도커 레지스트리는 기본적으로 포트 5000번 사용한다.
레지스트리를 만드는 명령어의 예시
docker run -d -p 5000:5000 registry

레지스트리 주소는 다음과 같다. 하지만 브라우저에 주소 입력하면 아무것도 안 뜬다.
localhost:5000
도커 데스크톱을 보면 레지스트리가 생성된 것을 확인할 수 있다.

이미지에 태그를 붙인다. 원래 my-nginx 이렇게 대충 붙였던 것을 레지스트리의 주소와 레포지토리 이름, 버전 표기를 추가하여 정식 명칭으로 만든 것이다.
태그는 기본값으로 ‘레지스트리주소/리포지토리 이름:버전’의 형식을 띤다.
docker tag <이미지 이름> <레포지토리 주소>/<리포지토리 이름>:<버전>
docker tag my-nginx:latest localhost:5000/my_nginx_240306:1
태그를 붙인 이미지가 생성되었다.

레포지토리에 이미지를 푸시한다. push 명령어로 이미지를 업로드 하자.
docker push localhost:5000/my_nginx_240306:1

Docker Hub 사용
이메일 주소만 있으면 누구든지 도커 허브에 가입할 수 있다. 입력하라는 필요한 정보 입력하고, 요금 플랜을 선택하면 된다.
도커 허브에는 유료 플랜과 무료 플랜이 있는데, 먼저 사용을 해보기만 해보고 싶으면 무료 플랜 선택하면 된다.
https://hub.docker.com

무료 플랜이라 하더라도, 서버를 운영하려면 비용이 발생한다. 여기에대가는 여러 리포지토리를 만들고 방치하지 말기 바란다.
Reference