✔ Kubernetes

[생활코딩] Docker 입문 수업 - 네트워크/ 명령어 실행

근본없는 개발자 2023. 6. 29. 23:38
네트워크

기초 개념 / docker desktop을 활용한 실습 / command line을 활용한 실습

 

 


01. 네트워크 개념

 

 

1. Docker를 사용하지 않고, Web Server를 사용하는 방법

. 컴퓨터에는 65535개의 포트가 있고, 컴퓨터에 설치되어있는 여러 S/W들을 네트워크적으로 구분해줌

. 위 그림의 우리의 Web Server는 80번 포트에서 접속을 대기하도록 설정되어있는 상태.

. http://example.com:80/index.html

→ example.com에 접속하는데, 80번 포트로 접속함

→ 80번 포트에는 web server가 대기중이라 web server로 요청이 전달됨

→ Web server는 정해진 file system 경로에서 index.html 파일을 찾는다

→ index.html 파일을 읽어서 web browser에게 전달

 

 

2. Docker를 사용하여 Web Server를 사용하는 방법

. docker를 이용하면 web server가 container에 설치됨

. container와 host 모두 각자 독립적인 실행환경이므로, 각자의 포트와 file system을 갖고 있다.

. 따라서 host와 container의 포트를 연결해주는 작업이 필요하다. (= port forwarding)

docker run -p 80:80 httpd 
// host의 80번 포트와 container의 80번 포트를 연결하라는 의미
// 앞의 80이 host의 포트, 뒤의 80이 container의 포트이다.

 


 

 

02. 네트워크 실습 - ① Docker Desktop에서 하는 방법

docker를 사용하여 index.html을 실행해봅시다.

 

1. httpd 이미지 다운 → docker pull httpd

2. container run

① docker desktop에서 run 버튼을 클릭해 실행한다.

 

② 옵션은 우선, container name을 지정해주고, ports를 지정한다.

. Ports > Local Host: localhost 몇번 포트로 들어왔을 때, container의 80번 포트로 들어갈 것인가를 지정

→ container의 80번 포트는 image를 만든 사람이 지정한 것

3. 실행 결과

 


 

02. 네트워크 실습 - ② Command line에서 하는 방법

docker를 사용하여 index.html을 실행해봅시다.


1. 명령어

docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 
// --publish , -p: Publish a container’s port(s) to the host 
// container의 port를 host로 연결한다

 

2. 실행 결과


02. 네트워크 실습 - ③ web browser에서 출력하기

 

접속화면, 로그

  • localhost:8080/index.html을 통해 접속 화면
  • 접속 시, 확인되는 로그


 

명령어 실행

Container / index.html 파일 수정


03. Container 수정 - ① docker desktop에서 하는 방법

index.html을 이용해 나의 웹앱을 만들 것이다!

  • Container에서 "Open in terminal" 을 클릭

  • terminal 창이 뜨고, 그 안에서 명령어를 수행할 수 있다.

→ 이때 수행 되는 명령어는, host에서 한 것이 아니라 container 안으로 들어가서 명령어를 실행한 것이다.

03. Container 수정 - ② command line에서 하는 방법

index.html을 이용해 나의 웹앱을 만들 것이다!

1. 명령어

docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 
// CONTAINER: 명령을 전달하고 싶은 CONTAINER의 이름을 지정 
// COMMAND: 실행 시키고 싶은 명령을 지정

2. 실행 결과

✨ container와 지속적으로 연결을 유지하면서, 명령을 전달하고 싶을 때?

→ "-it" 라는 옵션을 통해 컨테이너의 연결을 유지할 수 있다.

docker exec [OPTIONS] CONTAINER COMMAND [ARG...] //--interactive , -i: Keep STDIN open even if not attached //--tty , -t: Allocate a pseudo-TTY

💬 /bin/sh ?

→ 본쉘 이라는 프로그램을 실행함

→ 하는 역할 = 사용자가 입력한 명령어를 쉘 프로그램으로 받아서 운영체제에게 전달해주는 창구같은 역할

→ /bin/bash = bash 쉘

✨container와의 지속적 연결을 끊고 싶을 때?

→ "exit" 명령어로 연결을 끊고, 이후부터는 host에 명령어를 내릴 수 있다.

 


 

04. Web Server의 index.html 파일을 수정해보자.

 

1. index.html과 같은 파일들이 어느 경로에 저장되어있는지 확인한다.

→ hub.docker.com의 메뉴얼에 가서 찾아보면 된다!

2. 메뉴얼에 적힌 경로를 container 안에서 들어가본다.

docker exec -it ws3 /bin/bash // -it: 연결 유지 // ws3: container 이름 // /bin/bash: bash 쉘 프로그램으로 실행 cd /usr/local/apache2/htdocs/ // 메뉴얼에 적힌 경로로 이동 ls -al // 해당 경로의 파일들 조회

3. 필요에 따라 에디터를 설치해준다.

. vim, nano 같은 에디터는 보통 없다.

. container의 덕목은 용량이 작은 것! → 기본적으로 잘 포함시키지 않는다.

. nano 에디터 설치: apt update → apt install nano

4. 에디터를 통해 index.html 파일을 열어 수정하고 저장!

nano index.html 
// NANO 에디터 사용방법: https://opentutorials.org/module/3747/22523 

ctrl+x -> y -> enter
// 저장 후 종료

5. 새로고침하면 변경된 화면이 보여진다.

 

 
 

📌 출처

 

수업소개 - 생활코딩

수업소개 도커가 무엇인지 소개합니다. 강의

opentutorials.org