no image
Kubernetes Cluster에서 컨테이너 이미지 빌드
개요 흔히 컨테이너 이미지를 빌드하는 방법은 docker가 설치된 환경에서 docker build 명령어를 사용하는 것이다. 하지만 kubernetes cluster 안에서 컨테이너 이미지를 빌드하는 방법으로 사용하기에는 제약사항이 많다. 컨테이너 안에서 docker daemon을 띄우는 방법이나 host의 docker.sock을 마운트 하는 방법은 보안상 문제로 배척되곤 한다. 이러한 문제를 해결하고자 다양한 방법과 도구들이 등장했는데 그 중에 Kaniko를 통해 컨테이너 안에서 컨테이너 이미지를 빌드하는 방법과 이를 통해 Jenkins pipeline으로 만드는 방법에 대해 정리한다. Kaniko 소개 Kaniko github Kaniko는 Docker daemon에 의존하지 않고 Dockerfile..
no image
쿠버네티스 클러스트 프로비저닝 with RKE2
1. 개요 공식 사이트 Ubuntu 20.04를 기준으로 RKE2 설치를 통해 Kubernetes cluster를 provisioning하여 lab을 구성하는 과정을 설명한다. TL;DR curl -sfL https://get.rke2.io | sudo sh - sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service export PATH=$PATH:/var/lib/rancher/rke2/bin mkdir ~/.kube sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config sudo chown $USER:$USER ~/.kube/config chmod 600 ~/.kube/con..
도커 호스트와 컨테이너간 파일 공유하기
도커 컨테이너에 도커 볼륨을 만들어 붙이는 것 외에 파일 공유하는 방법 하나를 더 알아볼게요. 도커 호스트의 디렉터리를 도커 컨테이너의 파일 시스템에 마운팅 하는 방법이에요. 어떻게 하는지 먼저 볼게요. ➜ ~ mkdir shared ➜ ~ cd shared ➜ shared echo "Hello xodwk" > salute.txt ➜ shared docker container run --rm -d -it -v $HOME/shared/:/data/ alpine sh 2f97ed6853277bd71d251dd7d1490cfc04215766b8d5dd7b32924582c27f578c ➜ shared docker exec -it 2f97ed sh / # cat /data/salute.txt Hello xodwk..
no image
도커 볼륨 맛보기
도커 이미지로 컨테이너를 실행시키고 내용을 변경한 후 컨테이너로 이미지를 만들어봤었어요. 이 컨테이너로 이미지를 만들 때 변경된 부분은 read/write layer 라는 곳에 있어요. 만약에 어떤 이미지를 가지고 컨테이너를 만들고 내용을 수정했다가 이 컨테이너로 이미지를 따로 만들지 않고 컨테이너를 삭제하면 그 변경된 부분은 사라져요. https://xodwkx2.tistory.com/31 도커를 활용해 MongoDB 서버 만들기 도커를 활용해서 몽고디비 서버를 만들어 보아요. 먼저 도커 허브에서 mongo를 검색 해볼게요. mongo Official Image를 눌러서 들어가보면 아래와 같은 걸 볼 수 있어요. 오른쪽에 docker pull mongo 라고 써 xodwkx2.tistory.com 에 ..
no image
도커를 활용해 MongoDB 서버 만들기
도커를 활용해서 몽고디비 서버를 만들어 보아요. 먼저 도커 허브에서 mongo를 검색 해볼게요. mongo Official Image를 눌러서 들어가보면 아래와 같은 걸 볼 수 있어요. 오른쪽에 docker pull mongo 라고 써있는 거 클릭. 터미널에 붙여넣고 실행해볼게요. ➜ ~ docker pull mongo Using default tag: latest latest: Pulling from library/mongo 16ec32c2132b: Already exists 6335cf672677: Already exists cbc70ccc8ebe: Already exists 0d1a3c6bd417: Already exists 960f3b9b27d3: Already exists aff995a136b4..
도커 네트워크 다루기 -3
사용자 정의 브리지 네트워크 도커 네트워크의 기본 브리지 네트워크 외에 사용자 정의 브리지 네트워크를 만들 수 있어요. 사용자 정의 브리지 네트워크는 어떻게 만들고 어떻게 사용하는지, 기본 브리지 네트워크도 있는데 사용자 정의 브리지 네트워크는 왜 필요한지에 대해서 알아봐요. ➜ ~ docker network create xodwknet0 384b97f3858e56d6d95107b339499c4bc20163bd6f7fdd30fee11ccc37c6ed66 ➜ ~ docker network ls NETWORK ID NAME DRIVER SCOPE 8d3458727d03 bridge bridge local 3bec2ba8f217 host host local 3ace32da71f8 none null local ..
도커 네트워크 다루기 -2
이전에 기본 설정인 bridge 모드와 host 모드 그리고 null 모드까지 모두 봤어요. 그런데 어떠한 필요에 의해서 컨테이너의 서비스들이 같은 IP를 써야 하는 경우가 있을 수 있어요. 그럴 때는 어떻게 해야 할까요? 간단한지는 잘 모르겠지만 컨테이너 하나에 2개의 서비스를 넣는 방법이 있을 수 있겠네요. 하지만 이런 방법은 무슨무슨 법 위반이래요. 이럴 때 사용할 수 있는 좋은 방법이 있는데 바로 IP를 공유하는 거예요. 시간 날 때 그림을 그려서 올려보도록 할게요. 우선은 설명하자면 도커가 컨테이너를 생성하면서 그 컨테이너를 위한 네트워크 네임스페이스를 생성하고 가상 인터페이스도 만들어서 그 인터페이스에 IP도 할당해요. 서비스 1이 돌아가는 컨테이너를 만들면서 네트워크를 bridge도 아니고 ..
no image
도커 네트워크 다루기 -1
도커 데몬은 실행되면서 docker0라고 하는 가상 브리지 네트워크 인터페이스를 만들어요. 도커 데몬이 돌아가고 있는 시스템에서 ip addr 명령을 실행하면 아래와 같이 docker0라는 인터페이스가 생성되어 있는 것을 볼 수 있어요. ➜ ~ ip addr show docker0 3: docker0: mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:1a:08:d0:64 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:1aff:fe08:d064/..
no image
도커 이미지 다루기
image creating from a container Dockerfile로 이미지를 빌드하는 건 해봤어요. 이번에는 컨테이너를 이미지로 만드는 걸 해볼 거예요. 먼저 gninx:1.14 이미지로 컨테이너를 하나 만들고 docker ps 명령으로 잘 돌아가는지 확인해요. 그리고 잘 돌아가는 걸 확인했으면 docker exec 명령으로 컨테이너에 쉘로 접속해요. ➜ ~ docker run -d --name xodwkx nginx:1.14 04f0ef3bb0e5ecc3adb949a727ad3723318038e4f337a57e59e0da23220dd603 ➜ ~ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04f0ef3bb0e5 nginx..