Information Security

[Docker] 개념 및 환경구성 본문

STUDY/DevSecOps

[Docker] 개념 및 환경구성

sohexz 2024. 1. 22. 11:51

컨테이너 가상화 vs VM 가상화

  • 두 가지 가상화 모두 실행하고자 하는 애플리케이션 프로세스 및 종속 요소와 소스 등을 패키지, 즉 이미지화 하여 HostOS와 격리된 환경을 제공한다.
  • 다만, VM가상화는 실제 호스트 운영체제와 같이 별도의 GusetOS를 두고 원하는 애플리케이션을 설치하는 하드웨어 수준의 가상화를 구현하고
  • 컨테이너 가상화는 VM가상화에 비해 경량이면서 호스트 운영체제의 커널을 공유하는 운영체제(OS)수준의 가상화를 구현한다.
  • 따라서 컨테이너 가상화는 원하는 애플리케이션 환경을 빠르게 번들링하여 패키징한다.
  • 기본적으로 우분투 리눅스 기반으로 도커라이즈 했다.(우분투를 유지보수하는 캐노니컬이 LXC를 지원했기 때문)

 

Docker

  • 여러 계층의 어플리케이션을 컨테이너로 분리, 연결하여 실행하는 마이크로서비스 아키텍처 프로젝트에 유용
  • 애플리케이션의 인프라(runtime)는 이미지를 통해 제공하고 퍼블릭 혹은 프라이빗하게 공유 가능

 

 

 

 

 

 

labs.play-with-docker.com

 

Play with Docker

Play with Docker A simple, interactive and fun playground to learn Docker Login

labs.play-with-docker.com

 

 

인스턴스 생성

add new instance 클릭

 

 

도커 이미지 받아오기

 

$ docker pull nginx:1.23.1-alpine
$ docker images

 

$ docker run -d -p 8001:80 --name=webserver1 nginx:1.23.1-alpine

해당 이미지를 컨테이너로 띄우기

 

 

-d:  detach 모드 / 해당 컨테이너가 백그라운드에서 돌아감을 의미

 

-p: 포트바인딩 / 8001은 host의 포트이며, 이것으로 접속시 컨테이너의 80번 포트와 연결된다는 뜻

 

--name: 컨테이너이름(임의로지정가능) / 식별할 수 있는 이름을 추가로 지정

+ 그 뒤에 어떤 이미지를 활용해 컨테이너를 띄울지 설정

 

container의 실행포트 80으로 접속하면 host의 외부오픈포트인 8001로 인터넷 연결

 

$ docker run -d -p 8002:81 --name=webserver2 nginx:1.23.1-alpine
$ docker run -d -p 8003:80 --name=webserver3 nginx:1.23.1-alpine

두 개 더 만들어줌

8001, 8003 -> 인터넷 연결 O

8002 -> 인터넷 연결 X

 

컨테이너는 외부접근 불가. 외부접근은 host port를 통해서만 가능

 

$ curl localhost:8003

curul을 이용해서도 가능

 

 

$ docker ps

컨테이너 조회

 

CONTAINER_ID: 랜덤하게 배정

NAMES: 지정 안하면 랜덤하게 배정

IMAGE: 컨테이너를 띄우는데 사용한 이미지가 조회

PORTS: host포트→연동된 컨테이너의포트

 

 

 

$ docker stop [컨테이너 이름]

컨테이너 정지

 

ps로 조회되지 않고 ps -a로 조회

 

 

$ docker run -d -p 80:80 --name=pwd-container docker/getting-started:pwd

dockerhub 사이트의 해당 레포지토리에서 받아오겠다는 의미

 

 

  1. 이미지가 로컬에 있는지 조사
  2. 없다면 받아옴
  3. 레이어를 겹쳐서 구성해줌

'STUDY > DevSecOps' 카테고리의 다른 글

[Docker] 로컬 환경 사용  (1) 2024.01.26
[Docker] 로컬 환경 설정  (0) 2024.01.24
[Java] API  (0) 2024.01.19
[Linux] shell  (0) 2024.01.18
[Linux] job, shell  (0) 2024.01.17