Information Security Study
240123 도커(curl, stop, 이미지 생성 절차) 본문
접속하면 볼 수 있는 위 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을 여러차례 진행하고 받아온 다음 상태에 새 이미지를 생성했다고 나오는데
해당 작업의 절차는 아래와 같다.
- 이미지가 로컬에 있는지 조사
- 없다면 받아옴
- 레이어를 겹쳐서 구성해줌
위와 같이 레이어를 나누는 이유
: 매번 모든 이미지를 구성하는 요소를 전부 받아온다면 부담이 되기 때문에 이를 방지하기 위해 각 레이어를 부품처럼 취급한다.
이제 docker ps를 쳐 보면 아래와같이 다시 컨테이너가 잡히고
curl로 조사해도 정보를 받아온다.