개발/클라우드 엔지니어

우분투에 쿠버네티스 설치하기 1

새벽감성개발자 2024. 1. 17. 09:00
반응형

1. VMware에 Ubuntu 20.04 가상 머신 만들기

VMware 에서 Ubuntu 20.04 버전으로 가상머신을 하나 띄워줄겁니다.

 

 

우분투 20.04 버전
Docker을 먼저 알아보고 갈 것이기 때문에 name을 Dmaster로 설정할겁니다.
VMware에서 보여지는 이름과, 해당 VM이 저장될 위치를 설정하는데, 기본 경로에 설치하면 C드라이브에 용량이 줄어들기 때문에, 저는 D드라이브에 저장하도록 하겠습니다
디스크 용량은 권장 사이즈인 20GB로 설정합니다.
그냥 만들면, 바로 실행되므로 일단 필요한 구성을 해주겠습니다.
메모리를 8GB로 맞춰주겠습니다. 추후에 또 kubernetes를 설치할 수도 있기 때문에 메모리 용량을 늘려줄겁니다
바로 시작되게끔 체크를 풀어줍니다.
왼쪽 탭을 보면 Dmaster가 정상적으로 생성은 되었고, 구동 시키지 않았으니, Powered Off 상태로 나온 것을 볼 수 있습니다. Edit virtual machine settings로 가서 남은 세팅을 마저 해줍니다
Disabled 되어 있는 부분을 Always enabled로 변경해줍니다. 이 옵션을 해주는 이유는 딱 한가지 입니다. 추후에 linux 커맨드 입력 시 2~3줄 정도 되믄 명령어나 curl 명령어를 사용하는 경우 window -> vmware안으로 복사 븉여넣기가 이 옵션이 disabled로 걸려 잇으면 안됩니다. 이 옵션을 활성화 해주기 위해서 무조건 해당 vm을 power off 해줘야 하기 때문에 미리 설정해주고 가는겁니다.

  • 만약 제 블로그를 따라 하면서 실습을 진행하신다면 나중에 하게 되실 삽질의 시간을 조금 더 줄일 수 있을 거라 생각합니다.

이제 VMware를 구동해줍니다

 

2. Ubuntu 20.04 설치하기

korea가 보이나요? 제눈엔 안보입니다. 영어로 해줍니다.
최신 업데이트가 있는데 다운받을거냐? No 이대로 합니다
키보드 구성 ? Korean 선택 해줍니다
네트워크 구성 그대로 둡시다.
Proxy 구성도 그대로 둡시다 중요한건 이게 아님

 

  • 중간에 나오는 애들 다 옵션 그대로 두고 Done~

 

가용 가능한 용량이 8.22GB입니다. Done 누르면
이대로 설치할거냐고 묻는데 Continue를 눌러줍니다
이름짓기
ssh 접속이 가능하도록 할 것인가에 대해서는 check해줍니다. 설치
이거 두개 설치하면 cmd line으로 설치 하지 않아도 자동으로 거의 다 설치 될겁니다. 하지만, 연습의 목적이라면 아무것도 설치하지 않고 그냥 만들어줍니다.
선택한 옵션들을 기준으로 우분투를 설치하기 시작합니다
다되면 재시작 해주면 시작된다
위에서 설정한 이름과 비밀번호를 넣는다

※ 나의 경우 master / 1234 이므로 그대로 입력해주면 된다

정상적으로 로그인 됨을 확인 할 수 있다.

3.  Ubuntu 20.04 에 Docker 설치하기

sudo apt update && sudo apt install -y docker.ip net-tools
sudo usermod -aG docker $USER

# 서버를 재시작
sudo reboot

4. 도커 기본 명령

4.1.1 컨테이너 실행

※ 실습1. 도커 컨테이너 이미지 실행하기

sudo apt install -y cowsay
cowsay hello world!

## 도커 컨테이너 버전의 cowsay는 다음과 같음
# docker run <IMAGE>:<TAG> [<args>]

docker run docker/whalesay cowsay 'hello world!'

  • 귀여운 고래가 출력됨을 확인함
  • 컨테이너를 실행하면 로컬에 docker/whalesay 라는 이미지가 없어서 자동으로 이미지를 원격 저장소에서 갖고 온다
  • 도커 이미지 주소의 형식
    • <레지스트리 이름>/<이미지 이름>:<TAG>
    • 기본 레지스트리 주소 : docker.io
    • 기본 사용 TAG : latest
  • docker/whalesay == docker.io/docker/whalesay:latest

※실습2. 다른 방식의 <args>를 전달해 봅니다.

docker run docker/whalesay echo hello
# hello

  • docker run docker/whalesay echo hello
  • docker run <IMAGE>:<TAG> [<args>]
  • 해당 컨테이너는 파라미터(args)로 어떤 인자를 전달하느냐에 따라 수행하는 명령이 달라진다

※실습3. -d 옵션으로 컨테이너를 백그라운드로 실행

  • 사용할 이미지 : nignx
docker run -d nginx

  • -d 옵션으로 컨테이너 실행 시 CONTAINERD_ID가 return 
    • CONTAINERD_ID는 사용자마다 다름
  • nginx의 전체 주소 : nginx = docker.io/nginx:latest

 

4.1.2 컨테이너 조회

docker ps
# 컨테이너 조회

nginx 이미지가 실행되고 있는 것을 확인 할 수 있다.

4.1.3 컨테이너 상세정보 확인

docker inspect <CONTAINER_ID>
# docker inspect 1ef553019a8e

## 컨테이너의 상세 정보를 출력함
## 네트워크, 볼륨 등 컨테이너의 모든 정보를 포함

## 필자는 dos화면이기 때문에 전체 정보를 출력했을 때 끝부분밖에 나오지 않아서
 # 다음과 같이 실행해서 캡처했다.
cd ~
docker inspect 1ef553019a8e > nginx_view
vi nginx_view

## :q 하면 다시 나갈 수 있습니다

nginx 컨테이너의 상세정보를 확인 할 수 있습니다.

4.1.4 컨테이너 로깅

docker logs <CONTAINER_ID>
# 현재 실행중인 컨테이너가 1개 밖에 없어서 풀ID를 치지 않고 줄여서 적용

# docker logs 1ef55

docker logs -f <CONTAINER_ID>
# -f는 tail -f 옵션이므로 계속 로그를 확인 할 수 있다
# CTRL + C 로 로깅을 종료

4.1.5 컨테이너 명령 전달

  • 실행된 컨테이너에 새로운 패키지를 설치하거나 설정을 수정해야 하는 경우
  • exec 명령을 이용하면 컨테이너에 명령을 전달 가능
docker exec <CONTAINER_ID> <CMD>

# 새로운 패키지 설치
docker exec 1ef55 sh -c 'apt update && apt install -y wget'
docker exec 1ef55 wget localhost

sh -c 'apt update && apt install -y wget'
실패

※ 실패 해결 방법 : 구글링

더보기

※ docker image가 아닌 master@dockertest에서 진행합니다.

  • cat /etc/resolv.conf
    • nameserver 127.0.0.X
  • vi /etc/docker/daemon.json
{
  "dns": ["127.0.0.X"],
  "dns-search": ["example"]
}

 X  대신에 nameserver 본인이 해당한 IP 기재하시면 됩니다.

  • sudo systemctl daemon-reload
  • sudo systemctl restart docker
내 컨테이너 어디갔어!!

다시 위로 가서 docker run -d nginx

새로운 CONTAINER_ID의 NGINX가 생성됨을 확인
docker ps
docker exec df446a2b sh -c "apt update"
docker exec df446a2b sh -c "apt install wget"
docker exec df446a2b wget localhost
아 드디어 출력이 되었어!!

 

출처 : https://www.deok.me/entry/VMware-%EC%97%90%EC%84%9C-Docker-Ubuntu-%EC%82%AC%EC%9A%A9%EC%8B%9C-Temporary-failure-resolving-debdebianorg-%EC%99%80-%EA%B0%99%EC%9D%80-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%82%A0-%EA%B2%BD%EC%9A%B0

 

VMware 에서 Docker Ubuntu 사용시 Temporary failure resolving 'deb.debian.org' 와 같은 에러가 날 경우

VMware 에서 Docker와 Ubuntu 를 사용할때 아래와 같은 에러를 확인 하실 수 있는데요. ( Temporary failure resolving 'deb.debian.org' ) * 에러는 아래와 같이 패키지 양에 따라 다르지만 원인은 같습니다. Step 3/14

www.deok.me

 


4.1.6 컨테이너/호스트간 파일 복사

docker cp <HOST_PATH> <CONTAINER_ID>:<CONTAINER_PATH>

# 컨테이너와 호스트서버간의 파일을 복사함
  • /etc/passwd파일을 컨테이너 내부의 /usr/share/nginx/html/ 위치로 복사
    • /usr/share/nginx/html/은 nginx 서버의 웹 서빙 디렉터리

## 호스트에서 컨테이너로 파일 복사
docker cp /etc/passwd df446a:/usr/share/nginx/html/.
docker exec df446a curl localhost/passwd

# 위 2줄로 확인하시면 됩니다
## 보여지는 것 줄이기 위해서 다음과 같이 사용했습니다.
docker cp /etc/passwd df446a:/usr/share/nginx/html/.
cd ~
# /home/master/
docker exec df446a curl localhost/passwd > nginx_passwd
sed -n '1,5p' nginx_passwd

vi로 확인해도 되지만, 블로그 글을 쓰기 위해서 그냥 파일로 저장하고 앞의 5줄만 출력했습니다.

## 컨테이너에서 호스트로 파일 복사
docker cp df446a:/usr/share/nginx/html/index.html .
cat index.html

## sed -n '1,5p' ./index.html

cat으로 확인하면 전체 html문서가 다 보여집니다.

 

4.1.7 컨테이너 중단/시작/재시작

docker stop <CONTAINER_ID>       # 정지
docker start <CONTAINER_ID>      # 시작
docker restart <CONTAINER_ID>    # 재시작

  • docker ps 를 하면 정지된 컨테이너는 보이지 않고, 실행 중인 컨테이너만 보입니다
  • docker ps -a를 하면 정지된 컨테이너도 보입니다.

4.1.8 컨테이너 삭제

docker rm <CONTAINER_ID>		# 삭제

실행중인 컨테이너는 지울 수 없습니다

docker stop df446a
docker rm df446a
docker rm 1ef553
docker ps -a

nginx 컨테이너가 사라진 것을 확인 할 수 있다.

 

4.1.9 Interactive 컨테이너

  • 이미지 실행 시 -it 옵션을 통해 컨테이너로 접속해서 작업 가능
    • -it (Interactive) stdin, stdout 연결, tty 터미널 연결의 약자
  • ubuntu:16.04 이미지를 실행해서 bash shell을 실행
docker run -it ubuntu:16.04 bash
cat /etc/os-release
exit
docker ps -a

nginx나 다른 test로 만든 컨테이너도 위의 명령어들로 접속이 가능하다

  • docker run 6f8b3
  • docker exec -it 6f8b3
  • 컨테이너 내부
    • root@6f8b3a226a22:/#

 

반응형