본문 바로가기
  • Survival Plan
개발 이야기

docker-compose.yml 파일 설명 정리 (작업중)

by IT/머신러닝 엔지니어의 독서/경제/육아 공부 리치윈드 - windFlex 2020. 3. 10.

 

 

1. Docker 설치

참조 문서 : https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-from-a-package




1.1 리파지토리 설정

 

#1. Update apt package index
sudo apt-get update

#2. install Packages to allow apt to use a repository over HTTPS 
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

#3. Add Docker's official GPG key : 
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# key verifications ==> fingerprint : 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
sudo apt-key fingerprint 0EBFCD88

#4.
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

####echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee  /etc/apt/sources.list.d/docker.list




1.2 Docker CE 설치

#1. Update the apt package index.
sudo apt-get update -y

#2. install the latest version of Docker 
sudo apt-get install docker-ce

# apt-cache policy docker-engine

#3. verification

docker version
$ sudo docker run hello-world

 

1.3 쿠버네티스 (Kubernetes) 설치

 

sudo apt-get install bridge-utils
sudo apt-get install git -y
sudo git clone https://github.com/kubernetes/kubernetes.git

# 설치 파일 및 바이너리 다운로드
cd /root/kubernetes/cluster/ubuntu
./download-release.sh

1.4 쿠버네티스 Node 설정

vi /root/kubernetes/cluster/ubuntu/config-default.sh

config-default.sh 수정

export nodes=${nodes:-"root@192.168.50.11 root@192.168.50.2"}
roles=${roles:-"ai i"}
export NUM_NODES=2

nodes에 추가되는 아이피는 마스터 서버를 첫 번째로 지정하고,

노드 서버들은 그 뒤에 나열하면 된다. (스페이스로 구분)

 

roles에 추가되어 있는 a는 마스터를 의미하여 i는 노드를 ai는 마스터&노드를 의미한다. 

nodes 설정에 추가된 호스트 리스트 갯수에 맞게 설정한다.



1.5 RSA 키 생성

 

ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys


1.6 클러스터 배포 및 구동

kube-up 스크립트가 실행되면 바이너리, 설정 파일이 모든 node 머신에 복사되고(using scp),

kubernetes 가 실행된다

cd /root/kubernetes/cluster
KUBERNETES_PROVIDER=ubuntu ./kube-up.sh

1.7 Path 추가

- root 홈 디렉토리의 .bashrc 파일에 아래 패스 추가

PATH=$PATH:/root/kubernetes/cluster/ubuntu/binaries/
PATH=$PATH:/opt/bin/

1.8 Node 확인

kubectl get nodes

 

1.9 Kubectl 설치

curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl

1.10 Kubelet, Kubeadm 설치

sudo -i
apt-get update && apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<eof>/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm

 

1.11 Kubeadm으로 Cluster 생성

kubeadm init

 

1.12 MiniKube 설치

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.28.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

ㅇ 설치 확인

minikube version
kubectl version

ㅇ 초기화

minikube start

 

아래와 같이 리셋을 하면, docker container가 없다. 

kubeadm reset

 

kubernetes를 초기화 하면 Kube에 필요한 docker container들이 올라와 있는것을 확인할 수 있다. 

kubeadm init

 

 

cluster를 시작하기 위해서는, 아래 명령어를 실행 해야 한다고 함.

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

클러스터에 조인하기 위해서 명령어와 토큰값을 반환해줌

kubeadm join 172.31.20.200:6443 --token nrno8w.dbcofbn9d42llfr2 --discovery-token-ca-cert-hash sha256:5ef04e41aa11050523c6320a536ecaa57d6d22cc856a3879b8df9ddb36a16e1c

 

그런데, .kube 폴더에 넣으면 잘 동작 않함

sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf
export KUBECONFIG=$HOME/admin.conf

kubectl run nginx --image=nginx:1.10.0





 

 

2. docker-compose.yml 파일 설명



ㅇ 설치

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

ㅇ 설치 확인

$ docker-compose --version
docker-compose version 1.21.2, build 1719ceb

ㅇ 삭제

sudo rm /usr/local/bin/docker-compose

 

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose


sudo chmod +x /usr/local/bin/docker-compose

#확인

$ docker-compose --version
docker-compose version 1.21.2, build 1719ceb

# 삭제

sudo rm /usr/local/bin/docker-compose




ㅇ실행

$ docker-compose up -d

 

docker-compose.yml 파일을 기준으로 실행한다. 

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:

댓글0