Docker란?
Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼이다.
우리에게 익숙한 가상화 플랫폼인 VMware와 VirtualBox는 호스트 OS위에 게스트 OS 전체를 가상화하여 사용하는 방식이다. 이 방식은 여러가지 OS를 가상화할 수 있고 비교적 사용법이 간단하지만 무겁고 느려서 운영환경에선 사용할 수 없다.
이와 달리 도커는 OS가 아닌 프로세스를 격리 하는 방식이다.
리눅스에서는 이 방식을 리눅스 컨테이너라고 하고, 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU나 메모리는 딱 프로세스가 필요한 만큼만 추가로 사용하고 성능적으로도 거의 손실이 없다.
여러 개의 컨테이너들을 동시에 구동해도 서로 영향을 미치지 않고 독립적으로 실행되기 때문에 마치 가벼운 VMVirtual Machine을 사용하는 느낌을 준다.
1. Image
Docker Image란 컨테이너를 실행할 수 있는 실행파일, 설정 값 들을 가지고 있다.
Docker Hub란 Docker Image를 저장하고 배포하는 사이트로, 간단하게 실행하고자 하는 Image를 Pull해서 사용할 수 있다.
Docker Hub에서 Image들을 다운 받기 위해서는 다음과 같은 명령어를 사용한다.
docker pull [Image Name]
2. Container
Container는 Image를 실행한 상태라고 볼 수 있으며, 추가되거나 변하는 값은 Container에 저장된다.
같은 Image에서 여러개의 Container를 생성할 수 있고 Container의 상태가 바뀌거나 Container가 삭제되더라도 Image는 변하지 않고 그대로 남아있다.
만약 Image를 다운 받은 후 바로 Container를 생성하고, 해당 쉘(/bin/bash)로 명령어를 처리하려면 다음과 같은 명령어를 사용한다. 이때 -it라는 옵션을 거의 같이 사용하게된다. (i: interactive, t: terminal)
docker run -it --name [Container Name] [Image Name] /bin/bash
해당 Container를 사용 시작 및 중지하려면 다음과 같은 명령어를 사용한다.
docker stop [Container Name]
docker start [Container Name]
자주 사용되는 명령어
docker ps
현재 실행중인 Container 정보를 확인할 수 있는 명령어다.
docker ps -a
현재 실행중인 Container 뿐만 아니라 실행 중이지 않은 Container 정보를 확인할 수 있다.
실습
httpd 이미지를 Docker Hub에서 Pull 을 받은 후 TestWS1이라는 이름의 Container를 생성한다.
다음 명령어를 통해 TestWS1 이라는 컨테이너를 만들게되고, /bin/bash 쉘로 TestWS1에서 작업을 수행하게 된다.
docker run -it --name TestWS1 httpd /bin/bash
만약 quit 명령어를 실행하여 터미널에서 빠져나온 후, 다음 명령어를 통해 컨테이너를 중지하였다고 가정하자.
docker stop TestWS1
다시 실행하기 위해서는 우선 해당 컨테이너를 시작해야한다.
docker start TestWS1
다음 exec 명령어를 통해 /bin/sh 쉘로 실행할 수 있다.
docker exec -it TestWS1 /bin/sh
'보안 > Docker' 카테고리의 다른 글
[Docker] 취약한 도커 환경 실습 (0) | 2023.05.03 |
---|---|
[Docker] 호스트와 컨테이너의 파일시스템 연결 (0) | 2023.04.29 |