ms ( master ) wk1 ( worker 1 ) wk2 ( worker 2 ) IP 192.168.98.10 192.168.98.20 192.168.98.30 CPU 2 1 1 RAM 8G 4G 4G OS generic/centos8 generic/centos8 generic/centos8 virtualbox virtualbox ▶ Vagrantfile >> 반복문으로 처리했다 # -*- mode: ruby -*- # vi: set ft=ruby : # vagrant files for k8s cluster(one master node, two worker nodes) # edited by lee VAGRANTFILE_API_VERSION = "2" k8s_cluster = { "wk1.exampl..
♠ Docker swarm 에 대한 내용 참조 https://docs.docker.com/engine/swarm/ https://docs.docker.com/reference/cli/docker/swarm/init/ Swarm mode overview Docker Engine Swarm mode overview docs.docker.com ▶ Docker swarm 생성 ( manager 노드가 되었다 ) >> 두번째 장비에는 아래 내용중 docker swarm join --token ~ 명령어를 입력한다 >> join 을 위해서는 token 이 필요하다 >>> 그대로 복사 붙여넣기 ( 보안상 좋지는 않다 ) >> 명령어 그대로를 파일로 만들어서 넘겨주는게 낫다 [vagrant@docker1 ~]$ do..
오케스트레이션 [ orchestration ] - 오케스트라 생각하자 간단하게.. ● docker swarm - 많은 서버를 하나의 클러스트로 묶는다 >> 대규모 환경에서는 좋지 않다 ● kubernetes : 오케스트레이션의 표준 ( 무료 ) >> 복잡하고 어렵다 ● openshift : RedHat 의 상용 ( 유료 ) - base 는 쿠버네틱스이지만, >> 단순화 + 편리성 + 기능 확장 + 문제 발생시 기술 지원 ▶Ubuntu db 실행 vagrant@docker2:~$ docker run -d --name mysql2 -e MYSQL_ROOT_PASSWORD=mypass mysql ▶CentOS apache 실행 [vagrant@docker1 mysql]$ docker run -d --name ..
▶ todo 테이블 [vagrant@docker1 mysql]$ cat todo.sql USE todo; CREATE TABLE tasks ( id int not null auto_increment, task varchar(255), primary key(id) ); ● docker-entrypoint-initdb.d 에 들어가면 db 가 만들어진다 [vagrant@docker1 mysql]$ cat Dockerfile FROM mysql:5.7 ENV MYSQL_ROOT_PASSWORD=mypass MYSQL_DATABASE=todo ADD ./todo.sql /docker-entrypoint-initdb.d/ EXPOSE 3306 ◎ docker-entrypoint.sh 라는 셀 스크립트가 있다 >>..
▶ 명령어 입력 [vagrant@docker1 work]$ docker run -d --name=mydb -p 9001:3306 --env MYSQL_ROOT_PASSWORD=mypass --env MYSQL_USER=myuser --env MYSQL_PASSWORD=userpass --env MYSQL_DATABASE=mydb -v /var/dbdata:/var/lib/mysql mysql:latest Unable to find image 'mysql:latest' locally latest: Pulling from library/mysql 81badc5f380f: Pull complete c490e5dd1a9d: Pull complete 87aeb61f1478: Pull complete 1cacbea..
▶ Ubuntu 에서 CentOS 로 배포 ○ 사전작업 # docker system prune 으로 나머지 모든 쓰지않는 docker 를 삭제한다 >>> 불필요한 도커이미지 및 컨테이너 일괄 삭제 docker container prune docker image prune docker network prune docker volume prune 한방에 처리! docker system prune vagrant@docker2:~$ docker system prune WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - unused build..
▶ 도커 이미지에 이름표를 태그해준다 [vagrant@docker1 work]$ docker tag shuf:1.0 itsme/shuf1:1.0 [vagrant@docker1 work]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE itsme/shuf1 1.0 abefe91e0121 5 minutes ago 7.38MB ▩ 업로드 안될때.. ▷ 로그인을 해야 한다 [vagrant@docker1 work]$ docker push loo123/shuf1:1.0 The push refers to repository [docker.io/loo123/shuf1] 5f70bf18a086: Preparing 324fdb9469ab: Preparing d4fc045c9e3..
▷ lotto.py 생성 ( 파이썬 ) import random lotto=[] while len(lotto) < 6: number=random.randint(1,45) if number not in lotto: lotto.append(number) lotto.sort() print(lotto) [vagrant@docker1 src]$ python lotto.py [3, 17, 30, 32, 35, 43] # 리눅스에서도 가능한 명령어 [vagrant@docker1 src]$ shuf -i 1-45 -n 6 ▷ Dockerfile FROM alpine RUN apk update RUN apk add python3 COPY src/lotto.py /tmp WORKDIR /tmp ENTRYPOINT ["py..
○ hello.c 내용 더보기 int main() { printf("hhhhhh container \n"); return 0; } ○ Dockerfile 생성 FROM ubuntu:18.04 RUN apt-get update RUN apt-get install -y gcc COPY src/hello.c /tmp WORKDIR /tmp RUN gcc -o hello-world hello.c CMD ["/tmp/hello-world"] ▷ sample1 로 이미지파일 생성 [vagrant@docker1 work]$ docker build -t sample1 . ▷ sample1 의 크기 REPOSITORY TAG IMAGE ID CREATED SIZE sample1 latest fcaafc807ef9 45 ..
○ 최대한 작게 image 를 만드려면 scratch 를 사용한다 # scratch 이미지는 내부에 아무 내용도 없다 # 따라서 /tmp 등 아무것도 없으며 무조건 / ( 루트 밑으로만 설정 가능하다 ) # 컨테이너 안에 들어갈 수 없다 동적 컴파일 ▷ hello.c 생성 ( C 언어 기반으로 만들었다 ) #include int main() { printf("hhhhhh container \n"); return 0; } ▷ 컴파일러를 해줘야 한다 [vagrant@docker1 src]$ sudo yum -y install gcc [vagrant@docker1 src]$ gcc -o hello hello.c # - o : output [vagrant@docker1 src]$ ./hello hhhhhh co..