도커란?
도커는 컨테이너 기술을 기반으로한 일종의 가상화 오픈소스 플랫폼입니다. 컨테이너는 프로그램을 실행하기 위한 독립적인 환경을 제공하며, 운영 체제 수준에서 격리되어 독립적으로 실행될 수 있습니다. 도커는 애플리케이션을 컨테이너로 패키징하여 여러 환경에서 일관되게 실행할 수 있도록 도와줍니다. 이를 통해 애플리케이션의 이식성과 확장성을 향상시킬 수 있습니다. 또한, 도커는 가상화 기술을 사용하지 않고 호스트 운영 체제의 리소스를 공유하여 가벼운 가상화 환경을 구축할 수 있습니다.
컨테이너 내부에서 여러가지 작업을 하고 이를 운영 환경에 배포하려는 경우 해당 컨테이너를 '도커 이미지'라고 하는 일종의 패키지로 만들어서 운영 서버에 전달하면 운영 서버에서는 별도의 라이브러리 설치 과정이 필요없이 같은 환경을 구축할 수 있습니다. 쉽게 말하면 서비스를 개발했을 때 사용했던 환경을 다른 서버에서도 컨테이너로 복제할 수 있기 때문에 운영하기가 편리해집니다.
도커는 컨테이너 이미지, 컨테이너 실행 및 관리를 위한 도구들로 구성되어 있습니다. 이미지는 애플리케이션 실행에 필요한 파일과 설정 등을 포함하고 있으며, 도커를 통해 이미지를 생성하고 배포할 수 있습니다. 컨테이너 실행을 위해서는 도커 엔진이 필요하며, 도커 엔진은 호스트 운영 체제에서 컨테이너를 실행하고 관리하는 역할을 수행합니다.
도커 이미지
이미지는 컨테이너를 생성할 때 필요한 요소이고, 가상머신을 생성할 때 사용하는 iso 파일과 비슷합니다. 이미지는 여러개의 계층으로 된 바이너리 파일로 존재하며, 컨테이너를 생성하고 실행할 때는 읽기 전용으로 사용됩니다.
도커에서 사용되는 이미지는 '저장소이름/이미지이름:태그' 형태로 구성됩니다.
저장소이름은 이미지가 저장된 장소를 의미하고, 이미지이름은 해당 이미지가 어떤 역할을 하는지 나타내고, 태그는 보통 이미지의 버전 관리 등에 사용됩니다.
도커 이미지를 보여주는 명령어는 다음과 같습니다.
docker images
도커 컨테이너
앞에서 설명한 이미지를 가지고 컨테이너를 생성하면 그 이미지의 목적에 맞는 시스템을 사용하는 독립된 공간이 생성됩니다. 컨테이너는 이미지를 읽기 전용으로 사용하기 때문에 생성후 컨테이너에서 무엇을 하든 이미지는 영향을 받지 않습니다. 생성된 컨테이너는 독립된 파일시스템을 가져서 특정 컨테이너에서 어떤 프로그램을 설치 및 삭제해도 다른 컨테이너나 호스트는 변화가 없습니다.
컨테이너를 생성하는 명령어는 다음과 같습니다. 도커는 윈도우, 맥 OS, 리눅스 등 운영체제에 상관없이 같은 커맨드 명령어를 사용합니다.
docker run -i -t ubuntu:18.04
docker run 명령어를 입력하면 컨테이너를 생성하게되고 해당 컨테이너로 들어갑니다. 컨테이너에서 기본 사용자는 root입니다. 컨테이너를 생성할 때 run 명령어가 아닌 create 명령어를 사용할 수도 있습니다. docker create 명령어를 사용하면 컨테이너를 생성만하고 바로 들어가지는 않습니다.
docker run --name nginx -p 8000:80 -d nginx
위 명령어는 docker run 명령어를 통해 --name 이라는 옵션으로 컨테이너의 이름을 지정하며 -p 옵션으로 도커에서 실행되는 포트와 현재 호스트가 되는 PC의 포트를 연결시킵니다. 내 PC 8000 포트에 도커 컨테이너 80 포트를 포트 포워딩 한것입니다. -d는 백그라운드로 실행하겠다는 것이고, 마지막 nginx는 도커 이미지 이름입니다.
docker create -i -t --name my_centos centos:7
컨테이너가 생성되면 start 와 attach 명령어를 사용해서 컨테이너를 시작하고 내부로 들어갈 수 있습니다. exit 명령어를 사용하면 컨테이너를 정지하고 빠져나올 수 있습니다.
docker start my_centos
docker attach my_centos
docker stop nginx
컨테이너 목록을 확인하는 명령어는 다음과 같습니다. ps는 정지되지 않는 컨테이너만 확인합니다. 정지된 컨테이너도 모두 확인하고 싶다면 -a 옵션을 사용하면 됩니다.
docker ps
컨테이너 삭제 명령어는 다음과 같습니다.
docker rm my_centos
'기타 이것저것' 카테고리의 다른 글
오픈소스 라이센스 종류와 범위 (0) | 2023.06.24 |
---|---|
구글 Teachable Machine 리뷰 (0) | 2023.05.26 |
스픽 영어회화 앱 AI튜터 후기 (0) | 2023.05.23 |