이미지를 생성하는 방법은 두 가지가 있다
docker commit 명령어
도커 컨테이너를 이용해 이미지를 생성한다.
docker build 명령어
도커 이미지 설정 파일인 도커 파일을 만들어서 설정 내용대로 이미지를 생성한다.
기존에 있는 이미지를 수정해 새로운 이미지를 만드는 방법 같다...
기존 이미지를 실행(컨테이너등록) 시 /bin/bash
명령어를 통해 접속 수정사항 반영 뒤 아래 명령어로 생성
docker commit [컨테이너ID] [새로운이미지이름]
도커 파일을 생성해야 하며 일반적으로 도커 파일 이름으로 Dockerfile
을 가장 많이 사용한다.
jar 파일과 Dockerfile 둘다 같은 경로에 있다는 가정하에 진행
Dockerfile 작성
vi Dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=api_A_gradle-0.0.1-SNAPSHOT.jar
COPY ${JAR_FILE} myboot.jar
ENTRYPOINT ["java","-jar","/myboot.jar"]
도커 파일 생성과 관련된 명령어
명령어 | 설명 |
---|---|
FROM | 베이스 이미지 (도커 생성시 기반 이미지) |
RUN | 이미지를 실행할 명령어 |
EXPOSE | 컨테이너에서 사용할 포트 |
ADD | 이미지 생성 시 파일 추가 |
COPY | 이미지 생성 시 파일 복사 |
WORKDIR | 컨테이너 작업에 대한 디렉터리 |
MAINTAINER | 이미지 작성자 |
CMD | 컨테이너를 시작할 때 실행할 명령어 |
LABEL | 이미지 레이블 |
ENV | 컨테이너 환경 변수 |
VOLUME | 컨테이너의 볼륨 |
USER | 컨테이너의 사용자 |
ARG | Dockerfile 내부 변수 |
ENTRYPOINT | 컨테이너 시작시 실행할 스크립트 |
Docker 빌드
docker build -t [dockerID/dockerHubRepository이름]
=> docker build -t bbakku18/kuber-docker .
-t 옵션은 도커 이미지의 이름을 지정하는 옵션이다.
맨 뒤에 점 표시는 작성한 Dockerfile의 경로를 나타내는 것이다.
명령을 실행하는 위치가 Dockerfile과 같은 경로에 있기 때문에 점으로 표시한다.
( dockerHubRepository이름이 Docker Hub에 생성된 Repository과 다르면
PUSH할때 오류가 발생하니 동일하게 맞춰 주자.)
생성된 이미지 확인
docker images
Docker 실행
name : 생성할 컨테이너 이름 설정
p : [hotspot : container port]
docker run -d -p 8080:8080 --name test bbakku18/kuber-docker
curl -XGET localhost:8080/hello
Hello
Docker Container 조회
docker ps
Docker Container stop
docker stop <컨테이너 이름 혹은 아이디>
Docker Container start
docker start <컨테이너 이름 혹은 아이디>
Docker Container restart
docker restart <컨테이너 이름 혹은 아이디>
Docker Container 접속(attach)
현재 실행중인 컨테이너에 접속하는 명령어는 attach 다.
docker attach <컨테이너 이름 혹은 아이디>
Docker Hub 로그인
docker login
Docker Hub 올리기
docker push[생성했던 tag]
=> docker push bbakku18/kuber_docker