Docker
가상화
로컬 / 가상 머신 / 컨테이너
로컬
- 서비스 따라서 호스트 운영체제(서버 운영체제)의 선택에 제한적일 수 있다. 애플리케이션을 배포하는 경우에도 개발 환경과 동일하게 구성되지 않는 경우 오류를 예측하기가 어렵기 때문에 각 배포환경을 최대한 동일하게 구성되도록 신경을 많이 써야한다.
가상화 방식
가상머신(VM)
- VM은 하드웨어, 운영체제 수준에서의 가상화방식이다. 각 가상머신은 운영체제(OS), 바이너리, 라이브러리, 애플리케이션 전체를 포함하고 있다. 가상머신의 실행은 하이퍼바이저(hypervisor)라는 소프트웨어가 필요하며, 이는 호스트 서버의 물리적 하드웨어 리소스를 가상머신에 분배해주는 역할을 수행한다.
- 운영체제를 부팅하고 서비스를 시작하는데 상대적으로 더 많은 시간이 필요하다.
- 각 가상머신에는 운영체제가 포함되어 더 많은 디스크 공간, CPU, 메모리의 자원이 필요해진다.
- 개별 가상머신의 운영체제는 독립된 형태로 별도의 개별 관리가 필요하다.
- 완전한 격리, 강력한 보안, 다양한 운영체제 환경이 필요한 경우 가상머신 방식이 적합.
컨테이너
- 운영체제 수준에서의 가상화방식이다. 각 컨테이너는 자체적으로 필요한 바이너리, 라이브러리, 애플리케이션을 포함하고, 호스트 서버 OS의 커널을 공유하게 된다. 따라서 각 컨테이너에는 독립적인 운영체제가 필요하지 않으며, 이를 통해 리소스 효율성과 성능이 향상된다.
- 컨테이너는 애플리케이션 수준에서의 격리를 수행하기 때문에, 애플리케이션을 직접 실행하는 것과 거의 비슷한 실행속도를 가지며, 이는 가상머신 방식에 비해서 효율이 높다. 또한 성능은 직접 로컬에 구현한 애플리케이션 대비 90% 이상의 성능을 보여준다.
- 컨테이너는 오케스트레이션 툴을 통해서 관리할 수 있다.
- 리소스 효율성, 빠른 사용, 이식성, 확장성이 필요한 경우 컨테이너가 적합.
Docker 설치
우분투 가상머신 생성
Get Ubuntu Server | Download | Ubuntu
- LTS는 장기 사후지원을 해주는 버전으로 일반적으로 서비스 운영목적으로 운영체제를 선택할 때 사용한다.
- 다른 버전의 경우 사후지원 기간이 6개월, 3개월 단위로 짧은 경우가 있으므로 확인 후 받을 것!
- 메모리 공간은 무조건 4기가 다 줄 필요는 없고, 도커에 구동하는 서비스의 크기에 따라 유동적으로 정해도 상관없다.
- 받아둔 우분투 설치 이미지를 선택한다.
- 이어서 가상머신을 실행한다.
- 첫번째 선택지를 선택해서 우분투 운영체제를 설치한다.
- 언어는 그대로 영어로 진행한다.
- 인스톨러를 업데이트 후 설치를 진행한다.
- 이 부분은 업데이트 없이 바로 설치를 진행해도 상관없다.
- 키보드의 언어도 영어로 유지한다.
- 첫번째 항목은 경우 보편적으로 많이 사용되는 패키지들을 포함한 설치 방식
- 두번째 항목은 최소한의 패키지 구성으로 설치하는 방식
- 현재 가상머신의 기본 네트워크 구성값인 NAT이므로 내부 주소 10.0.2.15가 할당되어 있다.
- 미러사이트를 확인하고 최신 패키지들로 갱신한다.
- 저장소는 특별한 이유가 있는게 아니라면 기본값을 유지한다.
- 마찬가지로 특별한 사유가 있지 않다면 자동으로 설정된 파티셔닝 값으로 진행해도 문제는 없다.
- 다만 구성할 컨테이너가 부하량이 높은 경우는 조금 고민을 더 해보기..
- 자동 설정된 값으로 이어서 진행한다.
- 우분투에서는 관리자 계정 root는 기본적으로 잠궈두고, 대신 사용자를 별도로 생성하도록 하여 생성한 계정을 관리자로 설정하여 사용하게 된다.
- 기술지원을 받을 수 있는 구독을 필요하면 진행하면 된다. (유료임)
- openSSH 서버를 구성하면 외부에서 SSH 프로토콜로 접근하여 원격 작업이 가능하다.
- 외부 원격 접속이 필요없거나, 보안이 중요한 환경인 경우 추전하는 서비스는 아니다.
- 서버 환경에서 보편적으로 많이 사용하는 패키지들을 자동으로 구성하여 설치할 수 있는 메뉴
- 필요한 패키지를 선택해서 설치를 진행할 수 있다.
- 업데이트 후 설치를 완료하면 재시작을 진행한다.
- cdrom 언마운트 실패 시 그냥 엔터를 치면 넘어가진다.
- 현재 ssh 서비스에 대한 접속만 추가해준다.
- 이후 다른 서비스들은 필요할 때 추가해도 상관없음.
- 현재 호스트의 2222와 게스트의 22가 연결되어 있으므로 적절하게 설정값을 채워준다.
- 나머지 설정값들은 취향껏 설정해준다.
Docker 설치
Overview of Docker Desktop | Docker Docs
- 다음 자동 설치 스크립트로 docker를 설치할 수 있다.
- apt 또는 docker desktop으로도 설치 할 수 있음.
itwillbs@dockersrv:~$ sudo wget -qO- https://get.docker.com/ | sh |
[sudo] password for itwillbs: 1234 (안보임)
itwillbs@dockersrv:~$ sudo adduser $USER docker
Adding user `itwillbs' to group `docker' ...
Adding user itwillbs to group docker
Done.
itwillbs@dockersrv:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker Hub
Explore Docker's Container Image Repository | Docker Hub
mysql - Official Image (docker.com)
sudo docker run --name mysql1228 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:innovation
itwillbs@dockersrv:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
268169114d92 mysql:innovation "docker-entrypoint.s…" 9 seconds ago Up 8 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql1228
'⛏️ > Mysql | Oracle' 카테고리의 다른 글
[Oracle] 도커의 주요 용어/개념 (1) | 2024.01.10 |
---|---|
[Oracle] DML, DCL (1) | 2023.12.28 |
[Oracle] 일반 함수 (0) | 2023.12.28 |
[Oracle] sqlplus 접속 (0) | 2023.12.13 |
[Oracle] oracle 문법, 단일행 함수 (0) | 2023.12.12 |