유연한 서버관리 도커(Docker) 컨테이너 란
도커(Docker)란 리눅스 운영체제에서의 컨테이너 기술을 기반 운영되는 오픈소스 기반 서비스 로써 운영체제와 격리하여 관리할 수 있으며 모든 어플리케이션의 환경 제약조건에 제한되지않고 사용할 수 있는 기술로 어플리케이션의 실행 뿐만 아니라 필요한 모든 환경을 포함하여 실행환경을 코드로 작성함으로써 하나의 서비스든, 여러개의 서비스든 한 컨테이너로 패키징이 가능하며 백업서버의 구축이나 여러개의 서버로 분리시에 아주 간단하게 이미지를 설치함으로써 손쉽게 서비스를 관리가 가능하다는점에서 서버관리시에 유리하다는 장점이 있습니다
Docker 출시 이유
앱이든, 웹이든 어떠한 형태이든 특정 서비스를 서버에 실행시켜 오랜기간 서비스를 하다보면 서버의 하드웨어 이슈가 발생될 수 있기도 하고 천재지변이나 환경에 의한 서버가 응답되지않는 문제를 야기하기 전 서비스가 365일 24시간 문제없이 동작하기 위해서는 백업서버의 구성은 필수입니다 이러한 백업서버를 구성함에 있어서 소프트웨어의 사소한 버전간 문제로 서버와, 백업서버간의 차이를 보여주기도 하므로 도커(Docker) 를 더더욱 사용하게 됩니다
도커(Docker)는 컨테이너 기반의 가상화 플랫폼으로 데이터베이스나, 프로그램 등 어플리케이션에 제약받지않고 하나의 컨테이너로써 추상화가 가능하며 어떠한 장치이든 어디서든 손쉽게 실행이 가능하므로 서버에서 저장되어있는 값을 매번 셋팅할 필요없이 손쉽게 설치가 가능하기 때문에 도커(Docker)의 사용이 많은편 입니다
기존의 가상화 방식은 운영체제를 통째로 가상화하는 방식으로 VMwere 또는 VitureBox 와 같은 Host 운영체제 위에 Guest 운영체제를 얹어 사용하는 방식의 가상화 방식으로 사용하였지만 이러한 방법은 여러개의 운영체제를 가상화하기 위해서는 용량자체가 무거워지기도 하고 각 시스템구성장치의 자원을 나눠사용하는 탓에 크게 활용되기에는 어려웠고 이러한 상황을 개선하고자 CPU의 가상화기술을 이용하여 운영체제를 가상화하는 방식에서 더 나아가 프로세스를 별도로 격리하는 방법으로 Linux에서는 이러한 방법을 리눅스 컨테이너라고 지칭합니다
따라서 도커파일만 있다면 해당 이미지를 가지고 빌드하여 언제든지 손쉽게 운영하는 서비스를 실행할 수 있게되고 컨테이너의 경우 운영체제 하위에서 모든자원을 같이 할당받아 사용되기 때문에 자원의 손실또한 줄어들게 되어 해당방법을 사용하게 됩니다
Docker 의 장점
잘 작동되는 문제없는 프로세스들을 이미지화 하여 만들어 둔다면 어떠한 시스템에서든 실행이 가능하여 높은 확장성을 보여줍니다
두번째로는 도커(Docker)의 버전이 달라진 경우 옵션변경 입력이 가능하여 간단하게 실행모드를 변경할수도 있고, API나 데이터베이스의 주소를 쉽게 변경할 수 있어 유연한 모습을 보여줍니다
Docker Hub는 사용자가 직접 만든 이미지를 업로드하고 공유하는 서비스로 무료 소프트웨어의 이미지를 비롯하여 개인이 만든 이미지도 같이 공유되어있어 각 사용자가 만든 이미지를 사용해볼 수 있습니다
Docker의 사용 이유
Docker는 컨테이너형 가상화 기술을 사용하여 가벼운 동작과 사용하기 쉬워 컨테이너 안에서 환경이 완성되어있어 부하가 적고 고속동작이 가능하기 때문에 개발을 하는데 큰 장점을 가져다 줍니다
또한 Dockerfile을 사용하여 손쉽게 개발환경을 만들어낼 수 있다는 장점으로 여러사용자와 공유를 하거나, 서버를 추가시 이미지만 전달하는 형태로 누구든 서버를 구현해낼 수 있어 많은 개발사에서 사용되고 있습니다
도커(Docker) 에서 많이 사용되는 명령어
명령어 | 명령어 사용 예시 | 명령어 설명 |
docker run | $ docker run 컨테이너지정 | 해당 컨테이너의 시작 |
docker start docker stop docker restart |
$ docker start 컨테이너 $ docker stop 컨테이너 $ docker restart 컨테이너 |
컨테이너의 시작, 중지, 재시작 |
docker exec | $ docker exec 컨테이너 | 시작중인 컨테이너 내에서 명령어 실행 |
docker container ls | $ docker container ls | 컨테이너 목록 확인 |
docker rm | $ docker rm 컨테이너 | 중지된 컨테이너 삭제 |
docker images | $ docker images | 로컬 이미지 모두 확인 |
docker rmi | $ docker rmi 이미지명 | 도커 이미지 제거 |
docker build | $ docker build 도커파일경로 | 경로에서 Docker 이미지 만들기 |
docker logs | $ docker logs 컨테이너 | 컨테이너의 로그 출력 |
docker search | $ docker search 이미지명 | 도커허브에 게시된 도커이미지 검색 |
docker image pull | $ docker image pull 이미지명 | 도커허브에서 이미지 다운로드 |