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

포트번호 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

이동되었다!
여기서 리스트 확인 가능
( -a나 –l 또는 –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로 삭제요청 시 삭제 가능

'Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원 > 10월' 카테고리의 다른 글
22.10.20 - [ Docker ] 파일 복사, 파일 배포 ( window, docker ) + @ 오라클 설치 (0) | 2022.11.08 |
---|---|
22.10.19 - [ 13차 시험! - 인터페이스 구현 ] (0) | 2022.11.07 |
22.10.17 - [ Docker ] 이미지 ( 생성, 삭제, 태그추가, 파일로만들기, 파일로 이미지 만들기 ) (0) | 2022.11.06 |
22.10.14 - [ Docker ] 이론( 도커, 컨테이너, 커널, 이미지 관리하기) (0) | 2022.11.06 |
22.10.13 - [ Docker ] docker 설치, WSL 수동 설치 (0) | 2022.11.05 |