1. jar 파일 생성
2. Dockerfile 작성
# 기반이 될 Docker 이미지 선택
FROM openjdk:8-jdk-alpine
# 작업 디렉토리 생성
WORKDIR /app
# JAR 파일을 Docker 이미지로 복사
COPY <jar파일명>.jar .
# 컨테이너 실행 시 실행될 명령 정의
CMD ["java", "-jar", "<jar파일명>.jar"]
3. docker build 로 이미지 생성
docker build -t myproject:latest .
위의 명령은 현재 디렉토리의 Dockerfile을 사용하여 myproject:latest라는 이름의 Docker 이미지를 빌드합니다. -t 옵션은 이미지의 태그를 지정하는데, latest는 이미지의 버전을 의미합니다.
4. docker hub 에 이미지 푸쉬
이미지에 편하게 접근하기 위해 docker hub에 이미지 업로드 하기.
$ docker login
우선 도커에 로그인 후
$ docker push <이미지 이름>
해당 명령어를 통해 docker hub로 push 한다.
docker login 후 push 과정에서 오류 발생
해결 방안
- 로그인을 하지 않아서 발생하는 경우
- 로그인을 진행한다.
- 이미지의 user name과 docker hub의 name 이 일치하지 않을경우
- Docker Tag 를 Docker Hub ID 와 동일하게 생성함.
$ docker tag <원래 이미지 이름> <내 유저명>/<이미지 이름>
도커 태그명 수정 후 재 푸쉬
5. docker run 으로 컨테이너 실행
$ docker run -d -p <호스트 시스템 포트>:<컨테이너 내부 포트> <이미지 파일 이름>
- p 옵션은 Docker 컨테이너의 포트 포워딩을 설정하는 데 사용되는 옵션입니다. 이를 통해 호스트 시스템의 포트와 컨테이너 내부의 포트를 매핑할 수 있습니다.
- 옵션 -p는 두 개의 포트 번호를 콜론(:)으로 구분하여 지정합니다. 첫 번째 번호는 호스트 시스템의 포트이고, 두 번째 번호는 컨테이너 내부의 포트입니다. 따라서 -p 8080:8080은 호스트의 8080 포트를 컨테이너의 8080 포트로 매핑한다는 의미입니다.
- 이렇게 포트를 매핑하면 호스트 시스템의 특정 포트로 들어오는 요청이 컨테이너의 해당 포트로 전달되므로, 호스트 시스템에서도 컨테이너의 애플리케이션에 접근할 수 있게 됩니다. 이 예에서는 호스트의 8080 포트를 사용하여 컨테이너의 8080 포트로 들어오는 요청을 전달합니다.
6. docker 컨테이너 내부 접속
$ docker exec -it <컨테이너 아이디> /bin/bash
📌에러 OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
- 해당 에러는 컨테이너 내에서 /bin/bash 바이너리를 찾을 수 없기 때문에 발생하는 것. 이는 컨테이너 내부에 bash가 설치되어 있지 않거나 해당 경로에 bash가 위치하지 않아서 발생할 수 있음.
컨테이너 내부의 쉘 변경:
- /bin/bash 대신 /bin/sh을 사용.
$ docker exec -it <컨테이너 아이디> /bin/sh
'Docker' 카테고리의 다른 글
[Docker] 도커 컨테이너 > 호스트 , 호스트 > 도커 컨테이너 파일 복사 (0) | 2023.10.18 |
---|---|
[Docker] 도커 이미지 삭제 시 에러! (0) | 2023.10.18 |
[Docker] Mysql 도커 컨테이너로 올리기! (0) | 2023.10.18 |
[Docker] Docker + Jenkins를 사용하여 스프링부트(maven) 프로젝트 자동 배포 하기! (1) | 2023.10.18 |