JAVA/JAVA개발자 양성과정

Docker셋팅 🐋

👩‍💻 자바 개발자 양성과정 73일차

  1. VirtualBox에 Ubuntu 설치 후 Docker 설치하기
  2. 리눅스 - Ubuntu 인터넷 연결 여부 확인
  3. VirtualBox, 리눅스  - Port Forwarding
  4. 리눅스 - SSH 설치
  5. VirtualBox - 가상머신 복사
  6. Xshell - 방금 만든 가상서버 접근
  7. 리눅스 컨테이너가 무엇인가?
  8. 리눅스 - 호스트 네임 변경
  9. 리눅스 - OS확인
  10. VirtualBox - RAN카드 추가
  11. 윈도우로 ping되게 하기
  12. Docker - 설치
  13. Docker - RUN
  14. Docker - 허브 살펴보기
  15. Docker - 컨테이너 실행
  16. Docker - 사설 컨테이너 다운
  17. Docker - 프로세스에 올라간 컨테이너 확인
  18. Docker - 프로세스(메모리) 초기화
  19. Docker - image지우기

 


🐋 목표

오늘은 VirtualBoxUbuntu를 깐 다음 Docker을 설치할 것이다!!


🐋 준비물 

1. XSell

2. VirtualBox

상단 프로그램과 확장팩 다운로드

3. Ubuntu Server


🐋 VirtualBox에 Ubuntu를 깔자!

1. VirtualBox셋팅

환경설정 진입
머신 경로 지정
가상머신 > 호스트키 조합 키 변경
확장 팩 설치

2. 가상머신 만들기

VirtualBox에 새로만들기
버츄얼 머신을 설치할 장소와 라벨링 설정

가상머신을 만든다는 것은 용산 테크노 마트에 가서 컴퓨터를 맞추는 것과 같다.

메모리 설정

기본이 10GB인데 이는 Ubuntu를 기준으로 되어있는 것이다.

네이버나 다른곳으 기본 하드디스크 용량이 다르게 측정되어 있다.

파일의 확장자는 뭐를 쓸것인지 물어보는 것이다.

동적할당은 사용할때마다 50GB내에서 용량이 줄었다 늘었다 하는건데,

속도는 당연히 고정크기가 더 빠르다. 하지만, 눈에 띌만큼 차이가 나지는 않느다.

고정크기를 하면 초기 셋팅하는데 시간이 오래걸린다.

 

3. 환경설정 해주기

방금 생성한 Ubuntu 서버를 선택한 다음 상단에 설정을 클릭한다.
iso파일은 cd구울때 사용하는 부팅 프로그래이라 플로피는 제외한다.
코어는 2개 정도면 적당하기에 2개로 한다.

4. 다운받은 iso파일 설치하기

이런 식으로 설정해주면 cd롬에 cd를 넣은 것 같이 작동시킬 수 있다.

 

RAM 설정

어댑터  = ram 카드

어탭터1은 현재 설치하면서 필요한 소프트웨어나 패키지를 받아야하니까 NAT로 한다.

NAT가 바깥으로 나가려면 호스트OS인 윈도우즈로부터 IP할당을 받아서 윈도우즈가 주는 IP를 가지고 외부로 나간다.

 

5. 서버 실행

언어 선택
설치하면서 업데이트할 거 업데이트 해라!
키보드 레이아웃이 영문 자판이니?
사용할 ip를 확인해라!
외부로 나갈때 거치는 Proxy를 사용할 것인지 물어봄
파티션을 나눌 것인지 물어봄

정리하는 페이지에서 [done]

이대로 진행할거 맞니?에서 [continue]

계정 설정

your name은 이름/username은 id

 

OPEN SSH설치할지 물어봄

설치하지 않을꺼면 [done]

 


🐋 리눅스 - Ubuntu 인터넷 연결 여부 확인

$ sudo apt update

이게 잘되면 인터넷이 되는 것


🐋 VirtualBox, 리눅스  - Port Forwarding

1. 머신에 네트워크 생성

환경설정
네트워크 생성
방금 생성한 네트워크 환경설정
[포트 포워딩] 클릭
포트 포워딩 설정

호스트IP : 나는 이 머신 들어갈때 127.0.0.1로 들어갈꺼야

호스트 포트 : 포트는 105로 들어갈꺼야

게스트 IP : 그러면 10.0.2.105로 포트 포워딩을 해줄꺼야 (가상 머신의 포트 번호)

게스트 포트 : 포워딩해주는 포트는 22번이야

 

왜 이렇게 하느냐? Ubuntu서버는 브라우저가 없다.

거기에 도커로 웹서버를 깔아도 볼 방법이 없다.

윈도우 10에 있는 브라우저로 연결하고 싶다.

근데 문제는 브라우저는 22번 포트를 못쓰네?

그래서  이 갭을 해결하기 위해 '포트 포워딩'을 사용한다.

인터넷도 쓰고, 호스트에서 연결도 되는 두마리 토끼를 잡을 수 있다.

자세한 설명 >

 

2. 만들어둔 서버에 새롭게 만든 네트워크 연결

우분투 서버 선택후 상단 설정 클릭
NAT네트워크 선택

 

방금 생성한 네트워크를 선택한다.

 

3. 네트워크 매니저 설치

$ sudo apt install network-manager

네트워크 매니저를 깔아야 수동ip를 셋팅할 수 있다.

 

 

4. 네트워크 매니저 가동여부 확인

$ sudo systemctl status network-magnger

빠져나오는 방법 q

 

 

5. 나의 ip확인하기

$ ip a

 

나 = 게스트 ip가 현재 10.0.2.15임을 확인 할수 있다.

아직 내ip에 고정ip설정을 하지 않았기 때문에, 10.0.2.15가 ip로 설정되어있음을 확인할 수 있다.

아까 네트워크르 생성할때 게스트ip는 10.0.2.105로 설정했다. 

그래서 10.0.2.105로 바꿔주어야 할 것이다.

 

6. 고정 ip 설정하기

// 이동하자
$ cd /etc/netplan

//나 지금 어딨어?
$ pwd 

//뭐가 있어?
$ ls

//복사하자
$ sudo cp 복사할파일명 새롭게복사된는파일명

//파일 열어보자
$ sudo nano 파일명

 

dhcp를 true에서 no로 바꿔준다.

DHCP(Dynamic Host Configuration Protocol)

ip설정을 해주기위한 서버를 쓸꺼야

dhcp4: no = 고정ip를 쓸꺼야

adresses

지정할 ip를 적어준다.

 

gateway4

바깥으로 나가기위한 게이트웨이

 

네트워킹을 하기위해서는 3가지가 필요하다.

첫째, 나의 IP  => 10.0.2.105

둘째, 서브넷 마스크 => 24

셋째, 게이트 웨이

 

7. 문법검사를 해보자

내가 입력한 파일의 문법을 검사한다.

$ sudo netplan try

문제가 있으면 있다고 뜨고 없으면 시간초가 지나감

 

8. 고정ip적용

$ sudo netplan apply

 

9. 고정ip확인

몇번 껏다 킨다음 ip a를 해서 본인의ip를 확인하자

 


🐋 리눅스 - SSH 설치

ssh이 작동하면 puTTY나 XSHELL로 접근이 가능하다.

 

1. ssh서버 준비함

//관리자로 접근해서 설치할거야. openssh-server, curl, tree 이렇게 세개를.
$ sudo apt install openssh-server curl tree

2. ssh가 잘 잘 작동 되는 지 확인하기

$ sudo systemctl statuts ssh

 

active = 잘 돌아가고 있음

 

작업하다가 문제가 발생하면 안되니까 이 가상머신 자체를 복사하기 위해서 셧다운을 해준다.

 

3. 셧다운

 

// 관리자의 권한으로 지금 셧다운 할거야
$ sudo shutdown now

🐋 VirtualBox - 가상머신 복사

복사가 가능한 이유는 파일이니까!

 

양 하찮구 귀엽다

완전한 복사 = 값 복사 // 연결된 복제 = 주소 복사


🐋 Xshell - 방금 만든 가상서버 접근

포트 포워딩할때 설정했던 호스트와 포트번호로 세션정보를 등록한다.

여기 안되서 선생님께 여쭤봄

 


🐋 리눅스 컨테이너가 무엇인가?

os레벨 가상화를 지원하기 위한 프레임 워크


🐋 리눅스 - 호스트 네임 변경

// 호스트 네임 "간략하게" 확인하기
$ hostname

// 호스트 네임 "자세하게" 확인하기
$ hostnamectl

// 호스트 네임 변경하기 1번
$ sudo hostnamectl set-hostname 변경할이름

// 호스트 네임 변경하기 2번 
$ sudo nano /etc/hosts

여기 이름 수정
nano에서 바꾸면 cat /etc/hosts했을때 바뀐걸 확인 할 수 있다
바뀐 서버이름으로 ping때려도 잘 오는걸 볼수 있다.


🐋 리눅스 - OS확인

$ cat /etc/os-release

이런 결과가 나온다.

 


🐋 VirtualBox - RAN카드 추가

1개는 인터넷 전용

1개는 호스트OS에 윈도우즈10하고 연결할 것임

 

현재 상태에서 윈도우즈에서 접근이 안된다. 왜냐하면, 내 윈도우의 ip가 10점대가 아니기 때문임.

cmd에서 ipconfig로 확인해보면 아래와 같다.

현재 윈도우즈는 192점 대임

virtualbox에서 ran을 추가할때는 전원이 꺼져있어야 가능하다.

호스트 전용 어댑터 = 호스트OS와만 연결하겠다.

 

여기서말하는 호스트 OS란?

윈도우 CMD에서 ipconfig를 했을때, 이더넷 어댑터 virtualbox host-only network의 ipv4주소다.

윈도우os의 이더넷 어댑터 virtualbox host-only network
RAN카드가 두개가 된걸 확인할 수 있다.

 

가상머신에서 IP를 확인해보면 한개가 더 추가된 걸 확인할 수 있다.

* 리눅스는 ping이 되는데, 윈도우는 ping을 막아둠

 

 


🐋 윈도우로 ping되게 하기 -- 확인중... id windowPing

윈도우 하단 인터넷 우클릭
네트워크 및 공유 센터 클릭
고급 공유 설정 변경 클릭
개인 탭에 네트워크 검색 켜기
게스트 탭에 네트워크 검색 켜기
모든 네트워크 탭에 암호 보호 공유 켜기
잉? 안되는디?


🐋 Docker 설치하기

Docker Docs가기

 

1. 레파지토리 셋팅하기

$ sudo apt-get update
 $ sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
 $ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

 

2. 설치 완료 확인하기

$ sudo systemctl status docker

docker가 잘 작동되고 있다.


🐋 Docker - RUN해보기

run : 허브에서 찾고, 다운받고, 런까지 하는 것

$ sudo docker run hello-world[아무것도 안 적으면 최신버전]

내 images에서 찾고, 허브에서 다운받고 실행까지 시킴
내 image에 추가 됨


🐋 Docker - 허브 살펴보기

 

도커 허브 바로가기

 

허브에서는 아무거나 다운받지말고, offical image를 받는게 안전하다.


🐋 Docker - 컨테이너 실행하기

// nginx를 
// (-d) 백그라운드에서 돌려줘
// (-p) 포트 지정할거야
// 내가 컨테이너에 접근하기 위한 포트 8080, 컨테이너 내부가 받는 포트 8080
// (--name) nx라는 이름으로 실행시켜줘
$ sudo docker run -d -p 80:80 --name nx nginx

//ip 확인해보기
$ curl 127.0.0.1:80

 


🐋 Docker - 사설 컨테이너 다운받기

https://hub.docker.com/r/consol/tomcat-8.0

이걸 다운받아 보자

사설 컨테이너는 ~~/~~ 슬레이트가 들어간다.

 

$ sudo docker run -d -p 080:8080 --name tc consol/tocat-8.0

설치가 된 다음 8080포트로 접속하면 설치된 톰캣페이지가 보인다.

8080 포트로 접근시, 톰캣 페이지

 


🐋 Docker - 프로세스에 올라간 컨테이너 확인

// (-a) 다 보여줘
$ sudo docker ps -a

 


🐋 Docker - 프로세스(메모리) 초기화

// tc라는 이름의 컨테이너 지워줘
$ sudo docker rm -f tc

만약 이름이 없으면 컨테이너 앞 3글자만 적어주면 됨

 

메모리에서 내린것임

화물선에 있던 컨테이너를 부두로 내린것과 같음

그래서, 부두에는 프로세서(메모리)에서 썼던 컨테이너들이 쌓여있을 것임. 그것이 imgae


🐋 Docker - image지우기

$ sudo docker rmi [container id]
728x90
반응형