Information Security Study

240123 도커(curl, stop, 이미지 생성 절차) 본문

네트워크 캠퍼스/Docker

240123 도커(curl, stop, 이미지 생성 절차)

gayeon_ 2024. 1. 23. 15:49

 

접속하면 볼 수 있는 위 IP는 play with docker 내부에서 사용하는 가상머신 주소이다.

 

 

 

이미지 pull 및 목록 추가 후 

docker run으로 해당 이미지를 컨테이너로 띄웠다.

 

 

 

curl localhost:22222로도 접속가능하다.

 

network address 를 내부주소로 바꿔주는 용도로 NAT서비스가 자동으로 적용되었기 때문에 이렇게 사용 가능하다.

 

DNS → 도메인을 ip로

NAT → ip를 ip로 (외부->내부, 내부->외부)

 

 

먼저 브라우저가 DNS에게 도메인 정보를 넘기면 해당하는 ip주소를 반환한다.

그 후 얻은 ip로 목적 서비스의 게이트웨이를 통해 접속해야 하는데 

localhost로만 내부에 접속이 가능하다.

이때 NAT가 외부 ip를 내부 ip로 변환해 준다.

 

 

 

$ docker stop

을 해 보면 아래와 같이 stop에 필요한 여러가지 옵션들이 나온다.

리눅스에서와 마찬가지로 --help도 사용 가능하다.

 

 

 

docker를 stop하기 위해 contailner id를 확인했다.

식별이 된다면 id 전체를 적지 않아도 적용된다.

 

 

 

name으로 stop해 봤다.

 

 

 

오픈 포트에 22222가 사라졌다.

 

 

 

stop은 말 그대로 정지상태인거지 완전히 컨테이너가 제거된 상태는 아니다.

정지상태인 컨테이너는 ps로는 조회가 되지 않고 ps -a 로 조회해야 한다.

 

 

 

정지된 컨테이너를 지우고 싶다면 rm 명령어를 사용하면 된다.

 

 

docker pull은 중복된 pull 작업을 막기 위해 몇 가지 과정을 거친다.

 

먼저 이를 확인하기 위해 아래 명령어로 도커 도큐먼트를 받아올 것이다.

$ docker run -d -p 80:80 --name=pwd-container docker/getting-started:pwd

 

-d, -p, --name은 적용되어 있고 -p 포트바인딩은 80:80으로 잡는다.

 

뒤쪽에 이번에는 docker/getting-started:pwd가 기입되어 있다.

 

이는 dockerhub 사이트의 해당 레포지토리에서 받아오겠다는 의미이다.

 

 

 

실행시 pull을 여러차례 진행하고 받아온 다음 상태에 새 이미지를 생성했다고 나오는데

 

해당 작업의 절차는 아래와 같다.

 

  1. 이미지가 로컬에 있는지 조사
  2. 없다면 받아옴
  3. 레이어를 겹쳐서 구성해줌

 

위와 같이 레이어를 나누는 이유

: 매번 모든 이미지를 구성하는 요소를 전부 받아온다면 부담이 되기 때문에 이를 방지하기 위해 각 레이어를 부품처럼 취급한다.

 

이제 docker ps를 쳐 보면 아래와같이 다시 컨테이너가 잡히고

 

 

curl로 조사해도 정보를 받아온다.