Docker - 1 (2023.01.16)

최시열·2023년 1월 16일

scale-up 같은 박스 내에서 cpu를 늘리는 것, 줄일 수 없음
scale-out 필요한 리소스에 따라서 시간대별로 cloud를 통해 늘림
<-> scale-in 시간대별로 줄임


네트워크, cpu, os, was 가상화 => Docker

3-티어 DB, WAS, Web

서버의 도입 기간 불필요 - 불필요한 부분은 scale-in

이것을 잘 다뤄야 한다. cloud 이용 요금과 관계되기 때문에


image - pull, push
volume - storage를 관리하는 곳

도커는 미들웨어이다
OS위에 도커 그 위에 컨테이너(이것이 가상화, 컨테이너 하나당 ip를 가진다)

루트계정 진입
- sudo -i
레파지토리 업데이트
- apt-get update
도커에 필요한 앱 다운
- apt-get install apt-transport-https ca-certificates curl software-properties-common
- mkdir -p /etc/apt/keyrings
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- sudo apt-get update
도커 설치!
- sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • virtualBox-powershell
sudo -i
apt-get update

- 도커에 필요한 앱 다운
apt-get install -y ca-certificates curl gnupg lsb-release

- 도커 키 가져오기
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

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

- 도커 설치
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

- 도커 시작 및 상태 확인
service docker start
service docker status
  • 권한 설정
1. vi /etc/group 에서 docker에 guru 추가
2. chmod 666 /var/run/docker.sock

docker ps
docker images
등등 확인하기
  • 3가지의 서버로 나눠서 개발한다.
    - 개발 서버
    : 암호화된 DB로 개발, 단위테스트
    - 테스트 서버
    : 좀 더 신뢰도가 있는 DB, 연합테스트 통합테스트
    - 실행 서버
    : 인수테스트

  • docker image pull 실습해보기

- nginx image 가져오고 컨테이너 실행까지
docker run --name tmp-nginx-container -d nginx
- nginx 이미지 가져오기
docker pull $이미지이름(ex. nginx)

- nginx 이미지를 컨테이너 만들고 실행
docker run --name $컨테이너이름설정(ex. mynginx) -d nginx

- 컨테이너 실행 중지
docker container stop $컨테이너이름

- 컨테이너 삭제
docker container rm $컨테이너이름

- 이미지 삭제
docker image rm $이미지이름

- 이미지 확인
docker images
docker image ls

- 컨테이너 확인
docker ps (실행중인 컨테이너 확인)
docker container ls -a

- 포트지정
docker run --name web -d -p 80:80 $이미지(nginx)
curl localhost:80 -> 로컬ip에서 web으로 보여지는 html 반환
  • docker image 만들기 실습
- html..등등 파일 만들기(service)
- 같은 위치에 dockerfile 만들기
- cat > dokerfile 로 명령어 넣기

(이런것들....)
- <hello.js>
const http = require('http');
const os = require('os');	
console.log("docker server staring");
var handler = function(request, response) {
    console.log("Received request from " + request.connection.remoteAddress);
    response.writeHead(200);
    response.end("Container Hostname: " + os.hostname() + "\n");
};
var www = http.createServer(handler);
www.listen(8080);

- <dockerfile>
FROM node:12
COPY hello.js /
CMD ["node", "/hello.js"]

....

- <dockerfile>
FROM ubuntu:20.04
LABEL maintainer="GURU <guru*gmail.com>"
# install apache
RUN apt-get update \
    && apt-get install -y apache2
RUN echo "Test WEB" > /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/apache2ctl", "-DFOREGROUND"]

....

- docker build -t $이미지이름 .
- 이미지 생성 확인 및 컨테이너 확인

- docker 컨테이너 아이디로 접속해서 수정해보기
docker exec -it $컨테이너아이디(ex.9c07121c34ac) /bin/bash

cd /var/www/html/

echo " modify WEB " > index.html

curl localhost:80

- push
1. docker login을 먼저 한다.
	id: siyeol
2. 올릴 이미지 태그 설정
docker tag webserver:v1 siyeol/webserver:v2
3. 푸시
docker push siyeol/webserver:v2
profile
최시열

0개의 댓글