본문 바로가기

카테고리 없음

docker -EXPOSE, Dockerfile, build

EXPOSE
- 컨테이너에서 뚫어줄 포트/프로토콜을 지정할 수 있습니다.
- protocol을 지정하지 않으면 TCP가 디폴트로 설정됩니다.

EXPOSE <port>
EXPOSE <port>/<protocol>

# 예시
EXPOSE 8080

---
간단한 Dockerfile 작성해보기 
vi Dockerfile 혹은 vscode 등 본인이 사용하는 편집기로 Dockerfile을 열어 다음과 같이 작성해줍니다.

# base image를 ubuntu 18.04로 설정합니다.
FROM ubuntu:18.04

# apt-get update 명령을 실행합니다.
RUN apt-get update

# DOCKER CONTAINER가 시잘될 때, "Hello FastCampus"를 출력합니다.
CMD ["echo", "Hello FastCampus"]


---
Docker build from Dockerfile
- docker build 명령어로 Dockerfile로부터 Docker Image를 만들어봅니다.
$ docker build --help
# 자세한 옵션들에 대한 설명은 생략

# Dockerfile이 있는 경로에서 다음 명령을 실행합니다.
$ docker build -t my-image:v1.0.0 .

설명
- . (현재 경로에 있는 Dockerfile로부터)
- my-image라는 이름과 v1.0.0 이라는 태그로 이미지를
- 빌드하겠다라는 명령어
- 정상적으로 이미지 빌드되었는지 확인

# grep : my-image가 있는지를 잡아내는 (grep) 하는 명령어
$ docker images | grep my-image

- 그럼 이제 방금 블드한 my-image:v1.0.0 이미지로 docker 컨테이너를 run 해보겠습니다.
$ docker run my-image:v1.0.0
# Hello FastCampus가 출력되는 것 확인

1) Docker Registry
공식 문서
https://docs.docker.com/registry/
- 간단하게 도커 레지스트리를 직접 띄어본 뒤에, 방금 빌드한 my-image:v1.0.0을 도커 레지스트리에 push 해보겠습니다.
- Docker Registry는 이미 잘 준비된 도커 컨테이너가 존재하므로, 쉽게 사용할 수 있습니다.
- docker registry를 띄워봅니다.

$ docker run -d -p 5000:5000 --name registry registry

$ docker ps 
# 정상적으로 registry 이미지가 registry라는 이름으로 생성되었음을 확인할 수 있습니다.
# localhost:5000으로 해당 registry와 통신할 수 있습니다.

- my-image를 방금 생성한 registry를 바라보도록 tag 합니다.
$ docker tag my-image:v1.0.0 localhost:5000/my-image:v1.0.0

$ docker images | grep my-image
# localhost:5000/my-image:v1.0.0로 새로 생성된 것을 확인할 수 있습니다.

- my-image를 registry에 push 합니다. (업로드합니다)
$ docker push localhost:5000/my-image:v1.0.0 

- 정상적으로 push 되었는지 확인합니다.

# localhost:5000이라는 registry에 어떤 이미지가 저장되어 있는지 리스트를 출력하는 명령
$ curl -X GET http://localhost:5000/v2/_catalog

# 출력 : {"repositories":["my-image"]}

#my-image라는 이미지 네임에 어떤 태그가 저장되어있는지 리스트를 출력하는 명령
$ curl -X GET http://localhost:5000/v2/my-image/tags/list

# 출력 : {"name":"my-image", "tags":["v1.0.0"]}