Search
Duplicate
📒

[Docker Container] 01-3. 도커 기본개념, 설치

상태
미진행
수업
Docker Container
주제
Docker
연관 노트
3 more properties
참고

도커(컨테이너 기술)는 왜쓰지?

NOTE
도커없이 프로그램을 다운받고 실행한다면 갖고 있는 서버, 패키지 버전, 운영체제 등에 따라 많은 에러가 발생할 수 있다. 이러한 설치 과정을 단순하게 해주는 것이 도커다.
각 프로그램의 OS, 의존성 관리가 너무 힘듬…
도커(컨테이너)기술로 각자 격리화 시킨다!
도커가 없다..
홈페이지 이동 ->인스톨러 다운 -> 인스톨러 실행 -> 설치완료
과정도 복잡하고, 서버, 패키지 버전, 운영체제 등에 따라 설치과정에서 에러가 발생함
도커를 쓴다!
docker run -it redis 명령어를 이용하면 바로 설치한다!
도커를 이용해서 프로그램을 설치하면 예상치 못한 에러도 덜 발생하고 과정도 간단해진다!

도커

NOTE
컨테이너 기반의 오픈소스 가상화 플랫폼
도커 이미지 분석.. (등뒤에 있는게 컨테이너다)
도커를 사용하는 흐름
하나의 큰 애플리케이션을 서비스 단위로 분할하여 빠른 배포가 가능하다.
컨테이너끼리 서로에게 영향을 끼치지 않는다.
도커는 기술적인 개념이자 도구이며, 이미지를 컨테이너에 뛰우고 실행하는 기술!

도커 구성요소

NOTE
Dokcer Engine
도커를 이용한 애플리케이션 실행 환경 제공을 위한 핵심
Docker Hub
전 세계 도커 사용자들과 함께 도커 컨테이너 이미지를 공유하는 클라우드 서비스
Docker Register
도커 허브 사이트를 공개된 Registry라고 생각하자, 사내에 도커 컨테이너 이미지를 push/pull 할 수 있는 독립된 레지스트리 구성
Docker Machine
가상머신 프로그램 및, AWS, EC2 도커 실행 환경을 생성하기 위한 도구
Dokcer Swam
여러 도커 호스트를 클러스트로 구축하여 관리할 수 있는 도커

컨테이너

NOTE
다양한 프로그램들과 실행환경을 컨테이너로 규격화시켜 프로그램의 배포 및 관리를 단순화 시킬 수 있다
도커 컨테이너
화물선에 담는 컨테이너 처럼, 딱 맞는 규격에 여러 화물을 실어 쉽게 운송하는 개념이다.
컨테이너 안에 다양한 프로그램, 실행환경을 추상화하고 동일한 인터페이스를 제공해 프로그램의 배포 및 관리를 단순하게 해준다

도커 이미지( = 컨테이너 이미지)

NOTE
도커 이미지란 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 가볍고, 독립적이며 실행가능한 소프트웨어 패키지다!
도커 이미지

카카오톡 예시

도커 이미지 안에는 카카오톡을 실행할 때 필요한 모든 설정이나 종속성을 가지고 있다.
이 이미지를 사용해서 컨테이너를 만든다.
컨테이너를 실행하면 어플리케이션이 컨테이너 안에서 실행된다.
컨테이너는 이미지의 인스턴스다.

요약

즉, 도커 이미지를 이용해 컨테이너를 생성하고, 도커 컨테이너를 이용해 프로그램을 실행하는 것이다.

도커 설치

NOTE
uname -a # 업데이트 sudp apt update # docker ce 다운로드, https 경로로 다운받아야함 sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # gpg관련 값 업데이트, 키링개 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - # key값 확인 sudo apt-key fingerprint sudo apt-key fingerprint 0EBFCD88 # apt repository source에 docker repo 추가 (keyring 포함) echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # docker repo 추가이후 update 수행 sudo apt update # docker에서 제공하는 docker-ce 버전 확인 sudo apt-cache policy docker-ce # 최신 docker version 설치 sudo apt -y install docker-ce # df -h를 치면 root경로 확인가능 (sudo가 필요함) # /var/lib/docker의 경우 sudo가 필요하다. df -h sudo docker version
Bash
복사
도커 설치 방법 1
# docker에서 제공하는 shell script을 이용한 자동설치 curl -fsSl https://get.docker.com -o get-docker.sh # shell scirpt 내용 확인 후 변경가능 sudo vi get-docker.sh # 실행 권한 부여 sudo sh get-docker.sh
Bash
복사
도커 설치 방법 2
sudo apt-get update sudo apt-get install docker.io -y sudo systemctl status docker sudo chmod 666 /var/run/docker.sock
Java
복사
도커 설치 방법 3
# docker 그룹에 현재 사용중인 계정(scofe)를 등록해서 sudo없이 사용시킨다. sudo usermod -aG docker scofe sudo systemctl daemon-reload sudo systemctl enable docker sudo systemctl restart docker # 재접속해야 됨 sudo reboot
Shell
복사
도커 sudo 설정
도커 파일시스템 xfs
저장 드라이버 overlay2
Cgroup이 2로 올라가면서 이전버전 이미지가 사용안될 수 있음

Nginx 올리기 - 직접 pull받기

NOTE
nginx, nginx-alpine 용량비교
ctrl + p ⇒ ctrl + q (docker container exec접속시 종료하지 않고 나옴)
alphine은 무엇인가?
경량 이미지, 대부분 alphine, slim을 사용하는걸 추천
설치이후 8081포트로 연결시켜서 접속가능
54177 포트를 보면 8081- > 80 포트변환을 해주는기능이 있음
172.17.0.4 정보 (nginx 도커 정보)
8081포트로 도커 접속
IPtables에서도 조회가능하며, 현재 54177포트가 8081의 접속을 80으로 처리해줌
NAT, NATP 기술을 가지고 있는것이, docker-proxy

간단한 도커 실습

Nginx 올리기 - 기존 파일변경

NOTE
docker cp를 이용해서 ngnix내부의 html을 변경한다!
html과 이미지를 넣어서 변경한 페이지
<html> <head> <title>Docker Container App</title> <style>body {margin-top: 40px; background-color: #87CEEB; background-image: url("docker_logo.png");} </style> </head> <body> <div style=color:black;text-align:center> <h1> Docker Container Sample Application. </h1> <h2> "fastcampus" </h2> <p>Your application is now running on a container in Docker Container.</p> </div> </body> </html>
HTML
복사

Nginx 올리기 - 이미지 빌드

NOTE
FROM nginx:1.25.0-alpine COPY index-image.html /usr/share/nginx/html/index.html COPY docker_logo.png /usr/share/nginx/html/docker_logo.png EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
Docker
복사
기존 ngnix를 받아서 html과 image를 바꿔서 다시 빌드함!
docker run -d --name=webserver2 -p 8002:80 myweb:v1.0
Docker
복사