Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

의미없는 블로그

[Docker] 컨테이너 생성/실행/접속 본문

# 나/exploit CVE

[Docker] 컨테이너 생성/실행/접속

SaltLee 2019. 6. 24. 18:01

1. 이미지 검색

먼저 컨테이너를 만들려면 이미지가 있어야 하니깐 원하는 이미지를 검색한다

 

docker search 검색어 : 이미지 검색

 

Apache Struts 환경을 구성하고자 하여 docker search struts 로 이미지 검색

리스트 중 첫번째 이미지(piesecurity/apache-struts2-cve-2017-5638)를 다운받기로 함

 

2. 이미지 다운로드

 

docker pull 이미지명 : 이미지 다운로드

$ docker images : 다운받은 이미지 확인

$ docker rmi 이미지명 또는 이미지ID : 이미지 삭제

 

선택한 이미지를 다운받는다 docker pull piesecurity/apache-struts2-cve-2017-5638

잘 다운받아졌나 확인

 

3. 컨테이너 생성

이제 다운받은 이미지로 컨테이너를 만든다

 

docker run -it -d -P --name 컨테이너명 이미지명 /bin/bash : 다운받은 이미지로 컨테이너 생성

 

docker run -it -d -P --expose="80" --expose="8080" --name struts2 piesecurity/apache-struts2-cve-2017-5638 /bin/bash

-it : 입출력/쉘 관련 옵션, 그냥 나는 무조건 붙인다~~

-d : backgroud 에서 컨테이너 실행, 이것도 그냥 붙이면 된다~

-P --expose="80" --expose="8080" : 80, 8080 포트를 로컬의 임의포트로 매핑하겠다는 뜻임

-P는 --expose="포트번호" 랑 같이 쓰이는데 컨테이너의 특정 포트를 로컬의 임의 포트랑 매핑할때 사용한다

-P 말고 소문자 -p 가 있는데 얘는 -p 80:80 -p 8080:8080 이런식으로 써서 로컬 특정포트 딱 지정해서 매핑할때 쓴다

나는 로컬에 매핑하다가 충돌날까봐 그냥 -P 로 임의 포트 매핑 쓴다~ 

--name struts2 : struts2 라는 이름의 컨테이너 생성하겠다는 뜻

piesecurity/apache-struts2-cve-2017-5638 /bin/bash : 사용할 이미지명과 /bin/bash 는 컨테이너에서 사용할 쉘

 

 

4. 컨테이너 실행

docker run 으로 컨테이너 생성했으면 자동으로 실행된다

 

docker ps : 실행중인 컨테이너 확인

$ docker start 컨테이너명 : 컨테이너 실행

$ docker stop 컨테이너명 : 컨테이너 중지

$ docker ps -a : 중지된 컨테이너 확인

$ docker rm 컨테이너명 or 컨테이너ID : 컨테이너 삭제

 

struts2 라는 컨테이너 생성되었으며 80포트는 32769포트에, 8080포트는 32768포트에 매핑된 것 확인할 수 있음

 

5. 컨테이너로 들어가기

이제 컨테이너 만들어서 실행까지는 했는데...

 

이게 컨테이너 만든 사람이 만들어서 올릴 때 만약에 아파치가 들어있는 컨테이너를 올렸다고 치면

얘를 자동실행 등록해놔서 컨테이너 실행시키기만 하면 바로 아파치도 실행되게 해서 올려놓은게 있고

그냥 설치만 해놔서 컨테이너 실행시켜도 아파치 실행 안되게 해서 올려둔 것도 있어서 

 

컨테이너 실행시키고 웹 브라우저에서 아파치 80 포트로 접속했을 때 뜨면 자동실행이라 상관없는데

자동실행이 아닐경우 직접 컨테이너에 들어가서 아파치 데몬을 실행시켜줘야 한다

지금 얘 같은 경우도 struts2가 톰캣에 설치되어 있는데 자동실행이 아니라서

컨테이너에 들어가서 톰캣 데몬 실행시켜줘야 된다... 주저리쓰

 

컨테이너 들어가는 명령어..

$ docker exec -u 0 -it [컨테이너명] /bin/bash : 실행중인 컨테이너로 접속

 

-u : 접속할 계정의 uid, 0은 root 계정

-it : 입출력/쉘 관련 옵션, docker 사용하는데 있어 거의 필수적임, 그냥 붙이시오~

 

↑ 컨테이너 들어가서 Tomcat 실행시키는 과정

컨테이너에서 빠져나오고자 할 때는 exit 명령어 입력

 

 

6. Struts 접속

이제 톰캣 실행시켰으니깐 웹 브라우저에서 접속해 본다

아까 docker ps 했을 때 32768 -> 8080 포트에 매핑되어 있었으니깐

http://DockerIP:32768(8080) 으로 접속하면 됨~~

80 포트는 필요 없었넹~~

Comments