일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Copy
- 컨테이너간 통신
- docker container
- dockerignore
- Docker Desktop
- docker volume
- crossbrowsing
- arg
- container
- env
- dockerfile
- 명명된 볼륨
- docker
- Thymeleaf
- repository
- anonymous volume
- attached
- Docker배경
- 도커파일
- docker예시
- 익명볼륨
- named volume
- template engine
- bind mount
- Port Fowarding
- docker image
- Detached
- WORKDIR
- docker hub
- spring boot
- Today
- Total
코딩왕 미룡
[Docker] Docker 기초(배경 및 기본 용어) 본문
배경
◦ 어떠한 애플리케이션을 만들기 위해서 운영체제에 여러 소프트웨어를 깔아야함
◦ OS에 각각의 가상 운영체제를 만들어 네트워크로 연결을 해서 사용을 하게됨(virtual machine)
◦ 그러나 웹 서버를 운영하기 위해 운영체제를 까는게 비효율적임
◦ (용량이 어마어마한 OS를 깔다보니 실행속도도 느려짐, 여러개의 같은 프로그램이 깔릴 수 있음, 사용하지 않는 도구가 디폴트로 설정되어있음)
◦ 한대의 컴퓨터 안에서 격리된 환경으로 각각의 앱을 실행시키는 방법 등장
◦ docker는 container기술을 사용하는 소프트웨어 중 하나 + 관리프로세스를 단순화하는 도구
도커를 사용하는 이유
◦ ex) node.js 에서 await 문법을 사용해 개발했지만 이를 사용하는 다른 환경은 버전이 맞지 않아 에러가 발생하는 경우
◦ 같은 개발 환경을 가지는 것은 매우 중요 (버전 관리)
◦ 배포를 하지 않더라도 코드가 필요한 모든 것을 포함하는 환경을 보유하는 것이 중요
◦ 매우 빠름
◦ 이미지와 구성파일로 공유, 배포가 쉬움
◦ 앱과 환경을 보유하면서도 쓸모없는 부가적인 것들이 없음
◦ 운영체제에 영향을 거의 미치지 않으며, 최소한의 디스크를 사용
host
◦ 운영체제가 설치된 컴퓨터
container
◦ host에 설치된 격리된 각각의 실행환경
◦ 각각의 container에는 운영체제 전체가 아니라 앱을 실행하는데 필요한 라이브러리와 실행파일만 포함되어있음
◦ 실제로 실행중인 이미지의 구체적인 실행 인스턴스
◦ 이미지를 기반으로 하여 실행하는 것
◦ 실행시키는 행위는 run
docker hub
◦ 이미지 저장소
◦ 사용자들이 업로드한 이미지를 자유롭게 공유할 수 있음
◦ 누구나 업로드 할 수 있고 공개되어 있는 이미지는 누구나 사용가능하므로 보안상의 문제가 발생할 가능성이 높음
◦ official image 태그가 붙어있는 이미지는 공식 이미지
◦ Verified Publisher 태그가 붙어있는 이미지는 인증이 된 이미지
◦ 따라서, 인증이 된 이미지만 사용하는 것을 권장
image
◦ docker hub에서 다운받은 것
◦ 실제로 코드와 코드를 실행하는데 필요한 도구를 포함 → 실행시 컨테이너가 되어 코드를 실행
◦ 모든 코드, 설정 등이 포함된 공유가능한 패키지
◦ 다운받는 행위는 pull
container 기술
리눅스 운영체제에 위와 같은 앱 실행방식이 내장되어있음
리눅스 운영체제의 기술
container안에서 동작하는 각각의 앱들은 리눅스 안에서 동작하는 앱들
❓ 리눅스 운영체제가 아니라면 도커를 사용할 수 없을까 ?
→ window,mac 에 가상머신을 깔고 가상머신에 리눅스를 깔면 리눅스 운영체제 위에서 container기술 사용가능
→ docker가 알아서 가상머신을 깔고 리눅스를 설치해줌
◦ 운영체제가 리눅스가 아니라면 가상머신을 설치하기 때문에 속도 저하 발생
port forwarding
웹 브라우저와 웹 서버의 통신 방식
host와 container는 독립적으로 존재하기 때문에 포트번호를 연결해줘야함
host의 8000번 포트와 container의 80번포트를 연결시키려면 8000:80 으로 작성
→ host의 8000번 포트로 전송된 신호가 container의 80번 포트로 전송
◦ container의 port는 container를 만든 사람이 정해놓은 포트번호임
◦ host 는 나의 운영체제이므로 port 번호 직접 설정
◦ docker desktop에서의 port forwarding
◦ (하단 예시에서는 컨테이너, 이미지를 만든 사람이 이미지에 설치되어있는 프로세스에 접근 할 때에는 80번 포트로 접속하도록 설정해둔 것)
실행되고 있는 컨테이너는 컴퓨터의 자원을 사용하고 있으므로 꺼둘 필요가 있음
'Docker' 카테고리의 다른 글
[Docker] Docker hub(push/pull) (0) | 2023.06.07 |
---|---|
[Docker] Dockerfile 작성하기 (0) | 2023.06.06 |
[Docker] Bind Mounts(바인드 마운트) (0) | 2023.06.06 |
[Docker] Volumes(볼륨) (1) | 2023.06.05 |
[Docker] Docker Desktop 사용 예시(파일 수정해보기) (0) | 2023.06.02 |