Information Security
[Docker] 개념 및 환경구성 본문
컨테이너 가상화 vs VM 가상화
- 두 가지 가상화 모두 실행하고자 하는 애플리케이션 프로세스 및 종속 요소와 소스 등을 패키지, 즉 이미지화 하여 HostOS와 격리된 환경을 제공한다.
- 다만, VM가상화는 실제 호스트 운영체제와 같이 별도의 GusetOS를 두고 원하는 애플리케이션을 설치하는 하드웨어 수준의 가상화를 구현하고
- 컨테이너 가상화는 VM가상화에 비해 경량이면서 호스트 운영체제의 커널을 공유하는 운영체제(OS)수준의 가상화를 구현한다.
- 따라서 컨테이너 가상화는 원하는 애플리케이션 환경을 빠르게 번들링하여 패키징한다.
- 기본적으로 우분투 리눅스 기반으로 도커라이즈 했다.(우분투를 유지보수하는 캐노니컬이 LXC를 지원했기 때문)
Docker
- 여러 계층의 어플리케이션을 컨테이너로 분리, 연결하여 실행하는 마이크로서비스 아키텍처 프로젝트에 유용
- 애플리케이션의 인프라(runtime)는 이미지를 통해 제공하고 퍼블릭 혹은 프라이빗하게 공유 가능
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 사이트의 해당 레포지토리에서 받아오겠다는 의미
- 이미지가 로컬에 있는지 조사
- 없다면 받아옴
- 레이어를 겹쳐서 구성해줌
'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 |