docker란?
docker는 컨테이너 방식으로 애플리케이션을 포장하고 실행하기위한 툴이자 독립적인 어플리케이션 실행환경.
리눅스 컨테이너로 만들어짐. 라이브러리와 애플리케이션을 모아 컨테이너 방식으로 별도의 서버를 구성한 것
컨테이너란, docker라는 기술 위에서 실행될 수 있도록 만든 애플리케이션 상자
컨테이너 방식이란?
앱의 실행 환경을 격리하여 컨테이너에서 실행 중인 애플리케이션은 어떠한 의존성도 공유하지 않고, 각자 고유의 의존성을 포함함
컨테이너가 격리하는 것
- 프로세스
- 네트워크
- 파일 시스템
docker와 VM(Virtual Machine)의 차이
docker 장점
1. 의존성 충돌 문제 해결
2. 개발과 배포 환경 일치
3. 수평 확장의 용이
4. 업데이트 배포 용이
docker 작동과정
1. docker build
$docker build <옵션> <Dockerfile 경로>
dockerfile 통해 이미지 build
2. docker run
$ docker run (<옵션>) <이미지 식별자> (<명령어>) (<인자>)
이미지를 컨테이너 화
3. docker pull
$docker pull 이미지 이름:tag
허브, 레지스트리에 올라와있는 이미지 가져와서 생성
*hub에는 수 많은 이미지 이미 올라와있음 https://hub.docker.com/_/ubuntu
이미지(image)란?
실행되는 모든 컨테이너는 이미지로부터 생성됨.
이미지는 애플리케이션 및 애플리케이션 구성을 담아놓은 템플릿으로, 이를 이용해 즉시 컨테이너를 만들 수 있음
이미지를 이용해 수 많은 컨테이너로 수평확장 가능
레지스트리(Registry)란?
이미지는 레지스트리에 저장됨
대표적 이미지 레지스트리 docker hub, amazon ecr
docker 사용방법
같은 이름의 컨테이너는 추가로 실행못함
docker 삭제할 때는 이미지로부터 생성된 컨테이너 모두 삭제하고 이미지 삭제
//컨테이너 실행하는 방법
$docker container run -it // -it 옵션은 사용자와 컨테이너 간 인터렉션 필요할 때 사용
//현재 실행되고 있는 image 확인
$docker image ls
//만들어진 컨테이너 확인
$docker container ps -a
//컨테이너 삭제
$docker container rm 컨테이너이름
//이미지 삭제
$docker image rm 이미지이름
$docker image rm -f 이미지ID
httpd란?
apache http server를 실행할 수 있는 오픈소스 웹서버 소프트웨어
/usr/local/apache2/htdocs/ 경로에 웹 서버와 관련된 파일 저장되어 있으면 해당 파일을 기반으로 웹 서버 실행
docker와 local 파일 연결
연결방법은 cp, mount가 있음
cp를 활용하여 httpd와 local 앱 연결
// 1) 로컬 파일생성
// 2) httpd 이미지 만들고 컨테이너 실행
$docker container run --name 컨테이너이름 -p 818:80 httpd
// -p 옵션은 로컬호스트의 포트와 컨테이너 포트 연결. 818이 로컬호스트 포트, 80이 컨테이너 포트
// -d 옵션은 컨테이너를 백그라운드에서 실행하게 해준다.
// 3) 로컬호스트에 있는 파일을 컨테이너에 전달
$docker container cp ./ newPacman:/user/local/apache2/htdocs/
// 4) 실행중인 컨테이너를 이미지로 만들 수 있음
$docker container commit newPacman my_pacman:1.0
컨테이너 안에서 bash 셀 접속
$docker exec -it 컨테이너이름 bash
docker shell에 접속하여 컨테이너 조작가능
docker 사용사례
페이팔과 비자에서 docker를 사용하여 개발-테스트-배포에 사용되는 비용을 절감했음.
docker는 블록체인 노드 운영 및 개발 과정에서 신속하게 노드를 up하고 구동하기 위해서 사용되고 있음.
Docker provides great support in quickly getting a blockchain node up and running without the need to individually configure each machine separately.
블록체인 개발 채용공고에서 docker 사용경험을 우대함.
출처
Deploying Blockchain Applications with Docker
Docker provides great support in quickly getting a blockchain node up and running without the need to individually configure each machine separately.
www.skeps.com
https://www.docker.com/blog/top-5-docker-customer-success-stories-2017/
Top 5 Docker Customer Success Stories of 2017 - Docker
Learn from Docker experts to simplify and advance your app development and management with Docker. Stay up to date on Docker events and new version
www.docker.com
'TIL' 카테고리의 다른 글
TIL) 웹 호스팅 관련 사이트 : netlify, replit (0) | 2022.06.12 |
---|---|
TIL) React state, prop 사용(feat. memo, propTypes, css-module) (1) | 2022.06.12 |
TIL) 인증 중개 메커니즘: OAuth(feat. github을 사용한 Sprint review) (1) | 2022.06.10 |
TIL) http 통신 라이브러리: Axios (0) | 2022.06.08 |
TIL) 토큰기반 인증 : JWT (0) | 2022.06.08 |