Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/10월

22.10.18 - [ Docker ] 컨테이너 ( 생성, 옵션, 확인, 실행-종료-재시작, 파일복사, 접근, 삭제 )

giggs 2022. 11. 7. 14:11

 

 

-- INDEX --

 

 

1. 컨테이너 생성 2. 컨테이너 옵션 3. 컨테이너 정보 확인 :  4. 컨테이너
실행 / 종료 / 재시작
docker run -d
-i -t -it
--name -p -e
docker ps
docker ps -a
docker
< start / stop / restart >
<컨테이너 이름 or ID>

 

5. 컨테이너로 파일 복사 6. 컨테이너 접근하기
( 복사 잘되었나 확인하기 )
7. 컨테이너 삭제
docker cp 
< 원본파일경로> <복사할파일경로 >
docker exec
-it <컨테이너이름> <명령어>
docker rm <컨테이너 id> 
docker rm <컨테이너 id> force

 

 

 


 

 

 

 

1. 컨테이너 생성 : docker run 

  • docker run -d --name -p

 

 

 

 

 

1-1 : 이미지 다 지우고 tomcat:9.0 실행시켜보았다. - docker run

  1. 로컬에 톰캣9.0 없다고 표시되고
  2. 자동으로 로컬경로(도커허브) 에서 해당 이미지 찾아서 Pull 해주었다.( = 이미지 다운 받아 주었다 )
  3. 등록해 준 이미지로 컨테이너까지 자동으로 만들어주었다.
  4. 만들어준 컨테이너 실행까지 해주었다.

 

포트번호 8765에 컨테이너 등록해 준 것 여기에는 톰캣 실행되고 있다.

 

 


 

1-2 : 현재 실행되고 있는 컨테이너 정보 확인 - docker ps

  • 컨테이너 정보 확인

 

 

컨테이너가 실행되면 컨테이너 안에 있는 명령어가 모두 실행된 상태이다.

shell 에게 명령을 내리는 내용이 COMMAND에 있는 내용

 

COMMAND - 컨테이너 시작 시 자동으로 실행될 명령어

 

 


 

 

 

 


 

 

 

2. 컨테이너 옵션

 

 

 

 


 

 

 

2-1 : -d

  • 백그라운드에서 컨테이너를 실행하겠다는 의미
  • 멀티태스킹 가능하도록 해주는 것

 


 

2-2 : -it

 

  • xxxx컨테이너에 있는 bash 쉘을 실행해라 라는 명령어
  • exec --- 실행 --- 쉘은 실행만 하면 아무 효과 없다.
  • [ -it ] 라는 옵션을 이용하여 쉘과 소통할 수 있게 해주는 것
  • 쉘은 종류가 여러 개고 제공하는 기능도 다 다르다.

 

 


 

2-2 : --name

  • 이름 붙여주는 것
  • 안 써주면 내가 만든 컨테이너가 이름이 c10123asd123 이런 식으로 생긴다.
  • 도커 내부에서 유일하게 식별되는 16진수 값으로 부여
  • 컨테이너 만들 때마다 다르게 생긴다.

 


 

2-3 : -p

  • 포트 번호
  • vm과 비슷한 개념으로 이해
  • 컨테이너 안에서 실행되고 있는 tomcat에 접근하기 위해서는?
  • 1111:8080 요청하면 -- window 컴퓨터에 포트 번호에 접근 요청하는 것이다.
  • 그럼 docker 컨테이너에 요청하려면 어떻게 해야 하나?
  • window에 컨테이너 안에 있는 tomcat 연결되도록 포트번호에 매핑된 거 만들어준다.
  • 그 포트 번호로 요청 들어오면 컨테이너 안에 있는 tomcat의 포트로 연결시켜준다.

 

 

 

window 말고 HOST라고 해주자.

 


 

 

내 HOST의 8765포트에 요청을 보내면

컨테이너의 8080 포트에 연결해주는 거구나

 

 

포트번호가 HOST와 VM이 둘이 공용이 아니라서 매핑해주어야 한다는 것

 

 

 

 

 

 


 

 

 

 

 

3. 컨테이너 정보 확인 : docker ps -a

  • 실행되고 있지 않은 도커의 정보도 나온다.
  • 실행되고 있는 정보는 docker ps로 확인

 

 

COMMAND 명령어를 준다 - 해당 컨테이너 실행될 때 맨 처음 실행되는 명령어

 

 


 

3-1 : docker inspect <>

 

 

 

 

 

 


 

 

 

 

4. 컨테이너 실행 / 종료 / 재시작

  • start / stop / restart
  • 컨테이너 삭제 X - 컨테이너 중지 O
  • 컨테이너가 중지되면 실행되고 있던 톰캣도 중지된다.
  • docker ps는 실행 중인 컨테이너만 보여줌
  • docker ps –a는 실행되지 않은 컨테이너도 보여줌

 

 

 

 

 

 


 

 

 

 

5. 컨테이너로 파일 복사

  • 톰캣 컨테이너는 어디에 있나요?
  • 컨테이너는 격리된 공간이다. - 파티션 개념으로 이해하면 된다.
  • d: 대신 컨테이너 이름 kh_tomcat :을 볼륨처럼 사용하면 된다.

 

 


 

5-1 : docker cp명령어로 복사

  • docker cp < 원본파일경로> <복사할파일경로 >

 

 


 

## 복사할 파일 준비하고 ##

 

 


 

 

## 컨테이너 내부에 복사하기 ##

컨테이너 명을 볼륨으로 사용

컨테이너 안쪽 구조는 윈도우와 다르게 되어있다.

 

 

 

 

 

 


 

 

 

 

6. 컨테이너 접근하기 ( 복사 잘되었나 확인하기 )

  • 윈도우와 분리된 별개의 공간인 컨테이너에 접속해서 확인해야 하는데.
  • 방법이?
  • 해당 컨테이너에 들어있는 cmd창을 실행하면 확인할 수 있을 것 같은데.
  • 새로운 OS 같은 공간인 컨테이너에 들어가서 - cmd창을 실행하고 거기서 작업한다면 가능하겠네!

 

 

- 지금은 이렇게 하면 해당 컨테이너의 cmd창을 열 수 있구나 정도로 이해 -

 


 

6-1 : docker exec -it <컨테이너이름> <명령어>

  • docker exec -it kh_tomcat /bin/bash

 

 

이동되었다!

여기서 리스트 확인 가능

( -al 또는 al 옵션 추가하면 보기 좋게 리스트 확인 가능))

 

 


 

 

6-2 : 리스트 확인 : ls - al 

 

 

아까 복사했던 test.txt 는 안 보이네?

 아까 /root라는 디렉터리에 복사했었다.

지금은 user/local/tomcat에서 리스트 보고 있다..

 


 

>최상단 경로로 이동 후 ( cd / )

>root폴더로 이동 후 확인 ( cd root )

ls 봐보자

 

 

 

+ bin/bash 안에 webapps에 프로젝트 올리면 보이는 것이다.

 

 

쉘 빠져나올 때는 : exit로 빠져나오기

 

 

 

 


 

 

 

7. 컨테이너 삭제하기 : docker rm <컨테이너 ID>

  • docker rm <컨테이너id> 
  • docker rm <컨테이너id> force
  • 실행 중인 컨테이너는 삭제 불가능 - 다만 강하게 force로 삭제요청 시 삭제 가능