티스토리 뷰
무엇을 컨테이너로 만들까?
하나를 어플리케이션이 있다고 생각한다면, 어플리케이션을 운영하기 위한 환경이 필요하다. 예를 들어 java로 만들어진 프로그램이 데이터베이스로 mysql을 사용한다면, 운영환경엔 java와 mysql이 설치 되어 있어야 할 것이다. 개발한 어플리케이션과 운영환경이 모두 들어있는 독립된 공간이 컨테이너이다.
예를 들어서 MSA환경의 polyglot 어플리케이션 운용하는 경우 쇼핑카트기능, 결제기능을 다른 환경에서 개발이 되어 있다면, 쇼핑카트기능을 하나의 컨테이너로, 결제기능을 또 하나의 컨테이너로 만든다. ✨
컨테이너 만드는 방법
dockerfile ( 컨테이너를 구성하기 위한 명령어의 집합체 )을 통해 컨테이너를 빌드한다.명렁어들이 많기 때문에..필요한건 아래 홈페이지에서 검색을 하여 사용하면 될 것 같다😅
https://docs.docker.com/engine/reference/builder/
자주 쓰는 명령어 몇개를 소개하겠다(대소문자를 구분하지 않음. 보통 가독성을 위해 대문자로 사용)
# | 주석 |
FROM | 컨테이너의 운영환경 |
MAINTAINER | 이미지를 생성한 사람의 이름 및 정보 |
LABEL | 컨테이너 이미지에 컨테이너 정보를 저장 |
RUN | 컨테이너 빌드를 위해 base image에 실행 할 명령어들 |
COPY | 컨테이너 빌드시 호스트의 파일을 컨테이너로 복사 |
ADD | 컨테이너 빌드 시 호트트의 파일(tar, url)을 컨테이너로 복사 |
WORKDIR | 컨테이너 빌드시 명령이 실행 될 작업 디렉터리 설정 |
ENV | 환경변수지정 |
USER | 명령 및 컨테이너 실행 시 적용할 유저 설정 |
VOLUME | 파일 또는 디렉토리를 컨테이너의 디렉토리로 마운트 |
EXPOSE | 컨테이너 동작 시 외부에서 사용할 포트 지정 |
CMD | 컨테이너 동작시 자동으로 실행할 서비스나 스크립트 지정 |
ENTRYPOINT | CMD와 함께 사용하면서 명령어 지정 시 사용 |
helloDocker.js라는 스크립트를 만들고, node.js를 사용해 실행 시키려고 한다.
console.log("hello docker! It's my first docker build")
1️⃣ 프로젝트 경로로 이동하여 dockerfile 만들기
$ vi dockerfile
FROM node:12 #base image -> 내가 만든 js파일을 해석해서 실행시켜줄
COPY helloDocker.js / #helloDocker.js를 컨테이너 최상위디렉토리에 복사. copy 대신 add사용 가능
CMD ["node", "/helloDocker.js"] #컨테이너 실행 시킬 시 자동으로 실행 됨
2️⃣빌드하기
-t 옵션은 tag 옵션인데 소문자로만 사용 가능
.은 현재 위치에 빌드 (현재 위치와 빌드할 위치가 다르다면 위치를 명시해줄 것)
$ docker build -t hellodocker:v1 .
3️⃣빌드 된 컨테이너 확인
$ docker images
4️⃣컨테이너 실행
$ docker run hellodocker:v1
컨테이너 배포하기
컨테이너를 배포하기 위해서는 tag에 계정 이름이 포함되어있어야 한다. 그런데 tag를 그냥 hellodocker로 만들었기 때문에 우선 태그를 수정해준다.
태그명 수정
$ docker tag hellodocker:v1 이름/hellodocker:v1
컨테이너 push!
$ docker push ijcheon/hellodocker:v1
이렇게 하면 배포가 완료 된 것인데, docker search 명령어를 통해 실제로 배포 돼었는지 확인 할 수 있다.
배포확인
$ docker search 컨테이너명
'인프라 > docker' 카테고리의 다른 글
docker 스토리지 관리 - 볼륨마운트 (0) | 2022.02.13 |
---|---|
docker 컨테이너 리소스 관리 (0) | 2022.02.13 |
docker 컨테이너 실행과 종료까지 (0) | 2022.02.12 |
docker 기본 사용법(로그인,이미지다운로드,이미지확인,실행,이미지삭제) (0) | 2022.02.12 |
docker 설치하기(mac m1) (0) | 2022.02.12 |
- Total
- Today
- Yesterday
- java
- springboot
- 현대오토에버
- 코딩테스트
- 자바스크립트
- 현대코테
- 자바코테
- Linux
- 코테
- softeer java
- Docker
- 자바
- 쿠버네티스
- react
- 오토에버코테
- mysql
- softeer
- 도커
- Kubernetes
- 스프링
- 현대
- java 코테
- javascript
- 전자정부프레임워크
- 리액트
- Spring
- centos
- 아파치카프카
- 톰캣
- tomcat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |