AWS

AWS완전관리형서비스를 이용한 도커 및 쿠버네티스 개발환경구축과정 - 4주차

와니's(Wani) 2020. 8. 29. 12:54

도커, 쿠버네티스

  • 도커 최신버전 설치(AWS: UserData)
#!/bin/bash
sudo su - root
yum update -y
amazon-linux-extras install docker -y
yum install docker -y
systemctl start docker
systemctl enable docker
curl https://raw.githubusercontent.com/docker/docker-ce/master/components/cli/contrib/completion/bash/docker -o /etc/bash_completion.d/docker.sh
usermod -a -G docker ec2-user // 자동완성 기능
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

sudo su -

curl -fsSL https://get.docker.com/|sh
yum -y install bash-completion wget unzip net-tools mysql telnet rdate
rdate -s time.bora.net && clock -w
curl https://raw.githubse

  • 도커는 이미지를 만듬

  • 도커이미지를 생성하고 공유해야한다.

  • 이미지를 배포한다.

  • 이미지는 정적이다. 실행해야 한다. 예 웹서비스

  • 도커허브에 올리고, 이미지를 내려받고 실행시킨다. 전세계에 개방된다. 이것이 실행이다.

  • eks는 aws가 제공하는 완전 관리형 서비스이다.

  • 비용이 너무 비싸니까 개발환경으로는 구리다.

  • 처음부터 개발환경부터 eks를 구축할 필요는 없다.

  • 온프레미스 환경에서 클러스터를 구성해서 개봘환경을 충분히 구축한다음에 넘어가는것이 좋다.

  • 도커는 2가지 버전이 있음

    • ce : community edition (공개버전)
    • ee : enterprise edition (상업 버전)
  • linux aws cli 버전 1에서 2로 마이그레이션 문제

docker system info
docker system df

  • 도커 이미지
    • 개발자가 만들어서 완제품을 만드는게 이미지
    • vm을 만들때 iso라는 운영체제 이미지라고 부른다.
    • 도커이미지랑 유사한데, 도커 이미지는 폴더이다. 사용하기 편리하기 위해서 디렉토리를 만든다.,
    • 여러가지 도커 환경에 필요한 개발한 소스도 넣어놓는다. 그 폴더가 이미지라고 얘기된다.
  • 도커 컨테이너

docker search nginx
docker image pull nginx
docker image ls
docker container run -d -p 80(host포트):80(컨테이너 포트) --name webserver0 nginx
docker container ps
docker container ps -a

  • 웰컴투 페이지 수정하기

docker container stop 컨테이너 이름
docker container ps
docker container exec -it (이름) bash
find / -name index.html
ecoh "FOOD" > ~

  • 이미지 만들기
    • 도커파일 만들기
      • 개발작업 mkdir 로 폴더를 만들고 시작하는게 좋다.

mkdir dockerfile-lab && cd $_
vi Dockerfile

#Step : 1 Ubuntu 최신 베이스 이미지 지정
FROM ubuntu:latest
# STEP: 2 우분투 저장소를 다음 카카오로 변경
RUN sed -i 's/archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list
# SETP : 3 Nginx 설치를 위한 명령어 실행
RUN apt-get update && apt-get install -y -q nginx

# STEP : 4 호스트에 있는 index.html을 컨테이너 안으로 복사
COPY index.html /var/www/html

# STEP : 5 Nginx 데몬 실행
CMD ["nginx", "-g", "daemon off;"]

docker image build -t nginx-sales:v1.0
docker container commit -a "oen142<test@eample.com>" -m "delete index.debi.." webserver-sales nginx-sales:v2.0

docker container stop webserver-sales
docker container rm webserver-sales
docker container rm -f webserver-sales

docker container run -d -p 8080:80 --name webserver-sales nginx-sales:v2.0

mkdir onbuil && cd $_
vi Dockerfile.base

FROM ubuntu:16.04

RUN sed -i 's/archive.ubuntu.com/ftp.daumkakao.com/g' /etc/apt/sources.list
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install nginx

ONBUILD ADD testsite.tar /var/www/html

CMD ["nginx", "-g", "daemon off;"]

FROM web-base
``
cp website.tar testsite.tar
docker image build -t web-site:v1.0 .
docker container run -d -p 80:80 --name webserver web-site:v1.0

docker image build -t web-base -f Dockerfile.base .
docker container run -d -p 82:80 --name webserver2 web-site

  • 도커 이미지 도커 허브에 올리기
    docker image tag web-site:v1.0 (도커 아이디)oen142/web-site:v1.0
    docker login
    docker image push oen142/web-site:v1.0

  • 도커 이미지 받기
    docker container run -d -p 8282:80 oen142/web-site:v1.0

  • ECS는 도커 스웜이랑 비슷하다.

  • EKS로 다 넘어갔을 것이다.

  • eks

aws configure
aws s3 ls
aws eks --region ap-northeast-2 update-kubeconfig --name MY-CLUSTER

curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.17.9/2020-08-04/bin/linux/amd64/kubectl

chmod +x ./kubectl

cp ./kubectl /usr/local/bin

mkdir -p $HOME/bin && mv ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin

echo 'export PATH=$PATH:$HOME/bin' >> ~/.bash_profile

kubectl version --short --client