MakerHyeon

[Docker] docker container 살펴보고 만들어보기 본문

Server/Docker

[Docker] docker container 살펴보고 만들어보기

유쾌한고등어 2023. 3. 30. 23:27

3-2 도커 컨테이너 살펴보기

 

컨테이너? 컨테이너 이미지?

- 컨테이너는 하나의 Application 프로세스

 

도커호스트란?

- 현재 도커 데몬이 동작되고있는 리눅스 커널이 있는 시스템

Docker DaemonL systemctl start docker

 

컨테이너 = 다른 프로그램과 완전히 독립된 환경에서 실행!

컨테이너 이미지 = 컨테이너 실행을 위해서 미리 가지고 있어야 하는 컨테이너이미지

허브 = 컨테이너 이미지가 저장된 창고


● 실습

 

도커우분투서버실행후 ssh 접속

<layer가 저장되어 있는 곳>

 

허브에서 검색

$ docker search nginx

 

허브에서 이미지 가져오기

$ docker pull nginx:latest

 

컨테이너 실행하고 확인해보기

$ docker run --name web -d -p 80:80 nginx:latest
$ docker ps

컨테이너 웹 중지

$ docker stop web

컨테이너삭제

$ docker rm web

이미지 삭제(ex_ nignx)

$ docker rmi nginx

3-2 도커 컨테이너 만들어보기

Q1.무엇을 컨테이너로 만드는건가요?

  • 개발한 애플리케이션(실행파일) 운영환경이 모두 들어있는 독립된 공간
  • 개발한 프로그램과 실행환경을 모두 컨테이너로 만든다.
  • MSA 환경의 애플리케이션 운영

Q2.컨테이너 어떻게 만들어요?docker file 뭐죠?

  • Dockerfile 이용해 컨테이너를 빌드한다.
  • 컨테이너 이미지를 생성할 있는 고유의 지시어를 가진다.
  • 대소문자 구분하지 않으나 가독성을 위해 사용한다.
$ mkdir build
$ cd build
$ vi dockerfile
FROM node:12
COPY hello.js /
CMD ["node","/hello.js"]

 

- latest . 은 hellojs가 현재 디렉토리에 있음을 의미

$ docker build -t imagename(ex_hellojs):latest .

 

Q3.내가 만든 컨테이너를 배포하려면?

  • 허브에 넣으면 있다!
  • $ docker login
  • $ docker push hellojs:latest

● 실습

1. nodejs 애플리케이션 컨테이너 만들기 : hello.js

2. 우분투 기반의 웹 서버 컨테이너 만들기

3. 만들어놓은 컨테이너 배포하기

 

● 실습 1 - nodejs 애플리케이션 컨테이너 만들기 : hello.js

- hello.js 파일을 만든다.

 

- dockerfile을 만든다.

 

- FROM: hello.js를 실행할 base image

- COPY: 현재 디렉토리의 hello.js를 최상위 컨테이너에 복사.

- CMD: 명령어 실행 커맨드

 

- . 은 docker host의 작업 디렉토리를 알려줌(hello.js가 있는 디렉토리)

 

- 잘 만들어졌나 확인!

 

● 실습 2 - 우분투 기반의 웹 서버 컨테이너 만들기

-  도커 파일 편집

 

- 도커파일 내용

- 빌드

 

- 빌드 확인

 

- 웹 서버 동작 확인,동작중 컨테이너 삭제(동작중 옵션 -f)

 

실습 2 - 만들어놓은 컨테이너 배포해보기

 

- 도커 로그인 하고 푸시

- 허브에 올리려면 앞에 계정아이디가 붙어야한다.이때 이름을 바꾸는 tag명령을 사용.(실제아이디는같지만 이름 다른것이 또 생성됨)

 

허브에 업로드 (컨테이너 배포)

 

Comments