일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- MongoDB
- 리워드앱
- codecommit
- aws codecommit
- S3
- 리뷰
- mininet
- 앱테크
- Python
- namespace
- 포인트앱
- built-in
- 후기
- 토스카드
- VPC
- 재테크
- DocumentDB
- Linux
- docker
- 도커
- python3
- 하나머니
- network
- Container
- 커피머니불리기
- clone
- docker network
- MongoEngine
- 실사용
- AWS
- Today
- Total
ㅍㅍㅋㄷ
Docker container IP 확인 본문
Docker Container IP 확인
Docker의 Network 환경은 Linux namespace 라는 기술을 이용해 구현되었으며, Container들은 각각의 독립된 환경을 제공 받게 된다.
Container들은 기본적으로 한개의 ethernet interface 와 private IP를 자동으로 할당 받는다.
자세한 내용은 아래 포스팅으로-
( Docker Network 구조(1) - docker0와 container network 구조 )
Container가 제공 받은 Private IP는 초기 CIDR 설정에 따라 IP를 자동으로 할당 받게 된다.
그런데 이 IP는 docker engine이 자동으로 할당해 주기 때문에 container가 생성 된 후에야 확인이 가능하다.
여기서 간단히 Container가 할당 받은 IP를 확인 하는 방법을 소개 한다.
1. docker inspect 이용
docker inspect 는 container or image 의 low level 정보를 가져오는 명령어이다. 기본적인 출력 format은 json 형태이다.
root@~~# docker inspect CONTAINER_ID
[
{
"Id": "8aadfb1607f5065070b96cbe5e4259312038cc0e53b2ba62e4ea9da805691574",
"Created": "2016-05-18T07:16:27.598816826Z",
"Path": "httpd-foreground",
"Args": [],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 4925,
"ExitCode": 0,
"Error": "",
"StartedAt": "2016-05-18T07:20:00.233063636Z",
"FinishedAt": "2016-05-18T07:19:49.731866179Z"
},
.....(중략)
이 정보 중 key값이 IPAddress 라는 정보가 있는데 이게 container에 할당된 Private IP 이다. NetworkSettings 하위에 있다.
....
"NetworkSettings": {
"Bridge": "",
"SandboxID": "fb1b34f4f9022",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": null
},
"SandboxKey": "/var/run/docker/netns/fb1b34f4f902",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "b43eab8834dc5b",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
....(중략)
간단히 IP정보만 얻어 오려면 다음과 같이 하면 된다.
root@~~# docker inspect -f "{{ .NetworkSettings.IPAddress }}" CONTAINER_ID
2. docker exec를 이용한 확인
docker exec 는 docker host에서 container 내부에 명령을 보내 출력하는 명령어이다.
root@~~# docker exec CONTAINER_ID ip addr show eth0
16: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
위 명령어는 특정 container에 "ip addr show eth0" 명령어를 보내 eth0에 할당된 IP를 확인하는 명령어 이다.
3. docker 에 접속해 IP 알아내기
마지막으로, container에 shell로 접속한 후 직접 IP 를 확인해 보는 방법도 있다.
root@~~# docker exec -it CONTAINER_ID /bin/bash
root@8aadfb1607f5#
해당 명령은 container에 접속하는 명령어로 자세한 내용은 아래 포스트 참고.
접속하면 위와 같이 hostname이 container ID로 바뀐것을 확인할 수 있다.
container에 접속 한 후 2번 방법처럼 ip addr show eth0 로 확인하면 끝
root@8aadfb1607f5# ip addr show eth0
16: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:2/64 scope link
valid_lft forever preferred_lft forever
'IT > Docker' 카테고리의 다른 글
Docker Network 구조(3) - container 외부 통신 구조 (15) | 2016.07.06 |
---|---|
Docker Network 구조(2) - container network 방식 4가지 (1) | 2016.05.20 |
docker container에 접속하기 (2) | 2015.07.21 |
docker0 IP 및 CIDR 변경하기 (4) | 2015.07.14 |
Docker Network 구조(1) - docker0와 container network 구조 (10) | 2015.07.13 |