CICD/docker
[Docker] Docker Container 만들기
[dev] hiro
2024. 6. 17. 12:39
해당 포스팅은 이성미 강사님의 따라 배우는 도커(따배도, https://www.youtube.com/@ttabae-learn)를 보고 공부한 내용을 정리한 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
오늘은 고통스럽다.
내일은 더 고통스럽다.
그리고 내일 모래는 아름다울 것이다.
Mǎ Yún(알리바바 그룹 창업자 겸 회장)
컨테이너 대상
개발한 애플리케이션(실행파일)과 운영환경이 모두 들어있는 독립된 공간
- 개발한 프로그램과 실행환경을 모두 컨테이너화
- MSA 환경의 Polyglot 애플리케이션 운영
💡 MSA(Micro Service Architecture)
짧은 life Cycle을 가진 요즘 프로그래밍들에 대해 재빠른 대응 가능
컨테이너 만드는 법 => DockerFile
- Container를 만들 수 있도록 도와주는 명령어 집합.
- Dockerfile을 통해서 컨테이너 build!
Dockerfile
- 쉽고 간단하고 명확한 구문을 가진 text file로 Top-Down 해석.
- 컨테이너 이미지를 생성할 수 있는 instruction을 가짐.
- 대소문자를 구분하지 않으나 가독성을 위해 사용
# 디렉토리 생성
mkdir build
cd build
# 실행파일 작성
vi hello.js
# 도커파일 작성
vi dockerfile
# 도커파일 내용
FROM node:12 # base image 생성
COPY hello.js / # 컨테이너의 루트 디렉토리에 hello.js 복사
CMD ["node", "/hello.js"] # 실행
# image 생성
docker build -t imagename:tag .;
docker build -t hellojs:latest .;
Dockerfile 문법
더보기
FROM
- 베이스 이미지 지정 명령
- Dockerfile에 무조건 있어야하는 명령어.
LABEL
- 메타 데이터를 넣을 수 있는 기능
- =을 기준으로 저자, 버전, 설명, 작성일자를 key를 왼쪽으로 value를 오른쪽에 작성
CMD
- 컨테이너 동작시 자동으로 실행할 서비스나 스크립트 지정
RUN
- 이미지 생성시, base image에서 실행할 command
COPY
- 컨테이너 빌드 시 호스트 파일을 컨테이너로 복사
ADD
- 컨테이너 빌드시 호스트의 (tar, url)을 컨테이너로 복사
ENV
- 컨테이너 내의 환경변수 설정
USER
- 명령 및 컨테이너 실행시 적용할 유저 설정
WORKDIR
- 이미지 내에서 특정 폴더로 이동하기 위해서 쓰는 명령
EXPOSE
- docker 컨테이너의 특정 포트를 외부에 오픈하는 설정
- docker run -p 옵션과 유사. -p옵션과 다르게 매핑은 해주지 않고 외부에 포트를 여는 역할만.
VOLUME
- 컨테이너내의 특정 디렉토리를 컨테이너 외부 경로에 마운트
컨테이너 배포
- docker build -t hellojs:latest .
- docker host에서 container 이미지 생성
- image name은 hellojs tag는 latest
- docker login
- 인증
- docker push hellojs:latest
- docker hub에 push
nodejs 기반 애플리케이션 컨테이너 만들기
만들어놓은 컨테이너 배포하기
- docker login
- docker hub에 로그인
- docker <userID>
- docker tag <oldname> <newName>
- image 바꾸기
- docker push <userId>/<images>:<tag>
- user 계정으로 container 이미지 업로드.