1. 도커 파일 작성
2. 도커 클라이언트
3. 도커 서버
4. 이미지 생성

1. 도커 파일 작성

  • 도커 파일이란 도커 이미지를 만들기 위한 설정파일
  • 컨테이너가 어떻게 행동해야하는지에 대한 설정을 정의함.
  • 도커 파일 만드는 순서
    • 베이스 이미지를 명시해준다.(파일 스냅샷에 해당)
    • 추가적으로 필요한 파일을 다운받기 위한 몇 가지 명렁어를 명시
    • 컨테이너 시작 시 실행될 명령어를 명시

From

- 이미지 생성 시 기반이 되는 이미지 레이어.

- <이미지이름>:<태그> 형식으로 작성.

- 태그를 안 붙이면 자동적으로 가장 최신 것으로 다운

ex) ubuntu:14.04

 

RUN

- 도커 이미지가 생성되기 전에 수행할 쉘 명령어

 

CMD

- 컨테이너가 시작되었을때 실행할 실행 파일 또는 쉘 스크립트

- 해당 명령어는  DockerFile 내 1회만 쓸 수 있다.

 

2. 도커파일이 도커 클라이언트에 전달되어 도커 서버가 인식되게 해야한다.

docker build ./

 

3. 이미지에 이름 주기

docker build -t dockerId/name : version


​인프런 '따라하며 배우는 도커와 CI환경​' 수강 중.

 

 

'Docker' 카테고리의 다른 글

[Docker] 기본 명령어 정리  (0) 2022.04.17
[Docker] Docker vs VM  (0) 2022.04.17
[Docker] Image / Container  (0) 2022.04.04

도커 작동순서

1) 도커 클라이언트에 명령어 입력 후 도커 서버로 보냄

2) 도커 서버에서 컨테이너를 위한 이미지가 이미 캐쉬가 되어있는지 확인

3) 없으면 도커 허브에서 다운받아옴. 있다면 갖고있는 이미지로 컨테이너 생성

 

이미지 내부 파일 시스템 구조

docker run 이미지이름 명령어

1) docker : 도커 클라이언트 언급

2) run : 컨테이너 생성 및 실행

3) 이미지 이름 : 이 컨테이너를 위한 이미지

4) 명령어 : 원래 이미지가 갖고 있는 시작 명령어를 무시하고 해당 자리에 있는 커맨드를 실행

 

컨테이너 나열

* docker ps -a : 모든 컨테이너 나열

  docker ps : 실행중인 컨테이너 나열

 

1) CONTAINER ID : 컨테이너의 고유한 아이디 해쉬값

2) COMMAND : 컨테이너 시작 시 실행한 명령어. 대부분 이미지에 내장되어 있으므로 별도 설정 필요X

3) STATUS : 컨테이너 상태. UP(실행중), EXITED(종료), PAUSE(일시정지).

4) PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트. 특별한 설정을 하지 않은 경우 출력X

5) NAMES : 컨테이너 고유한 이름. 컨테이너 생성 시 --name 옵션으로 이름을 설정하지 않으면 도커 엔진이 임의로 형용사와 명사를 조합해 설정. id와 마찬가지로 중복이 안되고, docker rename 명령어로 이름을 변경할 수 있다.

     ->  docker rename original-name changed-name

 

컨테이너 중지

1) docker stop id/name: 컨테이너를 바로 중지시키지 않고 그동안 하고 있던 작업들을 완료하고(Grace Period) 중지시킨다.

2) docker kill id/name : 정리하는 시간 없이 바로 중지시킨다.

 

컨테이너 삭제

* 실행중인 컨테이너는 먼저 중지한 후에 삭제가 가능하다.

1) docker rm id/name 

   docker rm $(docker ps -a -q) : 윈도우(파워쉘에서 해야함. cmd에서 안됨)

 

이미지 삭제

1) docker rmi imgId

 

컨테이너, 이미지, 네트워크 모두 삭제

1) docker system prune

 - 도커를 쓰지 않을 때 모두 정리하고 싶을 때 사용하기

 - 실행중인 컨테이너에는 영향을 주지 않음.

 

실행중인 컨테이너에 명령어 전달

1) docker exec id

2) docker exec -it id 명령어 : -it를 붙여야 명령어 실행 후 계속 명령어를 적을 수 있다.

3) docker exec -it id sh : 실행 중인 컨테이너에 쉘 환경으로 접속하기

- 명령어를 입력할때마다 docker exec -it id 명령어를 적어주기에는 귀찮기 때문에 쉘환경으로 접속하여 명령어를 입력해준다.

4) Ctrl + D : 터미널 환경에서 나오기

 


​인프런 '따라하며 배우는 도커와 CI환경​' 수강 중.

'Docker' 카테고리의 다른 글

[Docker] 도커 이미지 생성하기  (0) 2022.04.18
[Docker] Docker vs VM  (0) 2022.04.17
[Docker] Image / Container  (0) 2022.04.04
도커
  • 도커 컨테이너에서 돌아가는 애플리케이션은 컨테이너가 제공하는 격리 기능 내부에 샌드박스가 있지만, 여전히 같은 호스트의 다른 컨테이너와 동일한 커널을 공유. 결과적으로, 컨테이너 내부에서 실행되는 프로세스는 호스트 시스템에서 볼 수 있다.
    •  ex) 도커와 함께 몽고DB 컨테이너를 시작하면 호스트(도커X)의 일반 쉘에 ps -e grep 몽고를 실행하면 프로세스가 표시된다.

 

가상머신
  • VM 내부에서 실행되는 모든 것은 호스트 운영체제 또는 하이퍼바이저와 독립되어있다.
  • 특정 VM에 대한 가상화 프로세스를 관리하기 위해 프로세스를 시작하고, 호스트 시스템은 그것의 하드웨어의 일부를 VM에 할당한다.
    • 시작 시간에 이 VM 환경만을 위한 커널을 부팅하고 운영체제 프로세스 세트를 시작해야한다. 이는 응용 프로그램만 포함하는 일반적인 컨테이너보다 VM의 크기를 훨씬 크게 만든다.

인프런 '따라하며 배우는 도커와 CI환경' 수강 중.

'Docker' 카테고리의 다른 글

[Docker] 도커 이미지 생성하기  (0) 2022.04.18
[Docker] 기본 명령어 정리  (0) 2022.04.17
[Docker] Image / Container  (0) 2022.04.04
Image
  • 도커에서 서비스 운영에 필요한 서버프로그램, 소스코드 및 라이브럴, 컴파일된 실행 파일을 묶는 형태
  • 특정 프로세스를 실행하기 위한 모든 파일과 설정값(환경)을 지닌 것으로, 더 이상의 의존성 파일을 컴파일하거나 이것저것 설치 할 필요 없는 상태의 파일을 의미
  • 하나의 이미지는 여러 컨테이너를 설정할 수 있고, 컨테이너가 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

 

Layer
  • 기존 이미지에 추가적인 파일이 필요할 대 다시 다운로드 받지않고 해당 파일을 추가하기 위한 개념
  • 이미지는 여러 개의 읽기전용 layer로 구성되고, 파일이 추가되면 새로운 layer가 생성된다. 그리고 도커는 여러 개의 layer를 묶어 하나의 파일시스템으로 사용할 수 있게 해준다.

 

Container
  • 이미지를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술
  • 컨테이너는 이미지 layer에 읽기/쓰기 layer를 추가하는 것으로 생성/실행된다. 
  • 종료되어도 컨테이너 & 읽기/쓰기 layer 또한 그대로 존재하기 때문에 다시 시작할 수 있다.
  • 한 서버는 여러 개의 컨테이너를 가져도 상관없으며 컨테이너는 각각 독립적으로 실행된다.
  • 컨테이너는 커널 공간과 호스트OS 자원(시스템 콜)을 공유한다. 

'Docker' 카테고리의 다른 글

[Docker] 도커 이미지 생성하기  (0) 2022.04.18
[Docker] 기본 명령어 정리  (0) 2022.04.17
[Docker] Docker vs VM  (0) 2022.04.17

+ Recent posts