빌드(CI)배포(CD)/Docker

[서버구축] - 도커란?, Docker[명령어]

Ch's Lee 2025. 11. 18. 13:10

도커

- 환경셋팅은 여러가지로 구성할 수 있다.

  1. AWS에다가 docker 설치
  2. 개인 데스크탑, 노트북 등에 docker 설치

 

 

특징 : 이식성

 

- docker를 사용하면,

  1. 일관된 설치할 수 있다.
  2. 독립적인 환경이여서 충돌 방지
  3. 명령어 한줄로 설치 가능하다.

 

 

- 핵심 용어

  1. 컨테이너 : 분리된 환경에서 실행 및 관리 가능함...
    1. 원도우 환경을 보면, 여러 계정을 둘 수 있다. 그리고 각 계정들은 각기 다른 프로그램들이 설치 할 수 있다. 서로 분리된 환경이다.
    2. Docker환경 안에 미니 컴퓨터가 존재한다. 그리고 그 상위 컴퓨터를 호스트 컴퓨터라고 한다.
    3. 독린된 환경으로 저장공간, 네트워크(IP, PORT) 가지고 있다.
  2. 이미지 : 게임 팩과 같다.
    1. 설치 과정, 설정, 버전 정보 등을 포함한다.
    2. 이미지는 어디서 다운로드 되는 것인가?
    3. https://hub.docker.com/ 여기서 다운로드 됨(Github처럼 저장소 역할)
      1. 각 사이트에 특정 버전을 다운로드 하며, 각 버전을 태그명이라고 함...
  3.  

 

- 실습(단어와 중요한 부분)

 

단어

  1. NginX
    1. 사용한 목적 3가지
      1. Html, 빌드를 통한 React파일(리액트는 자바스크립트 라이브러리) 정적인 파일들 랜더링함
      2. 로드 밸런스 :  분석 처리, 고가용성
      3. Reverse Proxy : 어느 서버로 보낼지! 중간서버(미들웨어) 역할

 

명령어

첫번째 방법

[이미지 생성]
docker pull nginx

[이미지 실행]
docker start ID값
docker stop ID값

-------------------------

두번째 방법

[컨테이너 생성]
docker create nginx
docker create mysql

- 위 작동원리 
수동으로 다운받던 이미지 이지만, 컨테이너로 특정이미지를 생성하면, 직접 이미지가 존재하는지 찾아보고 없다면, 도커허브에서 그 이미지를 
자동으로 다운받아서 미니 컴퓨터에 설치됨

[현재 생성된 도커 컨테이너 조회]

docker ps - 실행중인 컨테이너 표시

docker ps -a - 중단된 컨테이너 / 실행중인 컨테이너 표시
- Created 생성만 됨
- Up 이라고 나오면 실행중


[이미지 삭제]
docker image rm ID값

[컨테이너 삭제]
docker rm ID값

[create + start 합쳐놓은 명령어]
docker run nginx : 하면 설치 및 실행까지 다함

하지만, 백그라운드 명령어
docker run -d nginx

 

 

포그라운드 : 실시간으로 CLI로 실행, 어떤 로그 확인하는 것이 장점

백그라운드 :  포그라운드 반대 개념으로 중간에 명령어 입력 가능

 

중요 : 로그 확인 명령어

 

docker logs --tail 0 -f ID값

-f는 실시간 쌓이는 로그보기

 

컨테이너 내부에 접속해보기

 

[컨테이너 접속 명령어]
docker exec -it ID값 bash

 

설정을 위해서 내부에 접속해야함...

 

도커 볼륨(Docker Volume) : 도커 컨테이너를 삭제 되더라도 영속적으로 저장되게 하기 위함

 

 

 

 

도커의 보안 취약점

- 루트 권한

  1. 항상 루트권한으로 접속 및 켜져 있음(Docker Daemon)
  2. docker.sock 마운트시 위험

- 여러 컨테이너들이 호스트 커널과 공유함

  1. 격리된 환경이 아님

 

 

 

 

------------------ 다른 실습 -----------------------

    

[ 우분투 환경에 노트북에 서버 구축 ]

- 도커 설치

- 우분투에 nginx 설치

- 도커에 마리아 DB 설치


# Docker 버전 확인
docker --version

# Docker 실행 여부 확인
sudo systemctl status docker

# Nginx 프로세스 확인
ps aux | grep nginx

# Nginx 컨테이너 중지
sudo docker stop frontend-nginx

# Nginx 컨테이너 삭제
sudo docker rm frontend-nginx

# 확인
sudo docker ps

- 우분투에 설치하는 거임(도커에 설치하는게 아님)
sudo apt-get update
sudo apt-get install nginx -y

# 설치 확인
nginx -v

# Certbot 설치
sudo apt-get install certbot -y

# SSL 인증서 발급
sudo certbot certonly --standalone -d eumbank.co.kr -d www.eumbank.co.kr

 
1. nginx - 설치
2. MariaDB 설치
docker를 aws에 설치하고, 각 컨테이너 즉, MariaDB 설치 후 서버의 화면

 
 
 
 
-- 실제 서버 구축시 사용한 이미지