172.17.0.0/16

Private (RFC 1918) RFC 1918

The 172.17.0.0/16 range is the default subnet Docker assigns to its built-in bridge network (docker0). Every container started without an explicit network gets an IP in this range. If this conflicts with your corporate or VPN network, Docker's bridge range can be reconfigured in /etc/docker/daemon.json.

Network Address
172.17.0.0
Broadcast Address
172.17.255.255
Subnet Mask
255.255.0.0
Usable Hosts
65,534
First Usable IP
172.17.0.1
Last Usable IP
172.17.255.254
Total IPs
65,536
Prefix Length
/16

Network address — the base address of the block (172.17.0.0). All devices in this subnet share this prefix. Cannot be assigned to a host.

Broadcast address — packets sent to 172.17.255.255 are delivered to every device in the subnet. Also reserved — not assignable.

Usable hosts — the 65,534 addresses between those two that you can assign to servers, VMs, or interfaces.

Subnet mask255.255.0.0 is the dotted-decimal equivalent of /16. Older tools and Cisco configs use this format instead of CIDR slash notation.

Full Details

CIDR Notation 172.17.0.0/16
Network Address 172.17.0.0
Broadcast Address 172.17.255.255
Subnet Mask 255.255.0.0
Wildcard Mask 0.0.255.255
Prefix Length /16
IP Address Class Class B
Total IP Addresses 65,536
Usable Host Addresses 65,534
First Usable IP 172.17.0.1
Last Usable IP 172.17.255.254
Network (Hex) 0xAC110000
Broadcast (Hex) 0xAC11FFFF
Governing RFC RFC 1918
Address Type Private (RFC 1918)

Binary Representation

Network Address
10101100.00010001 10101100.00010001.00000000.00000000
Subnet Mask
11111111.11111111.00000000.00000000

The first 16 bits (1s in the mask) identify the network. The remaining 16 bits identify hosts within the network.

Split into Equal Subnets

Split 172.17.0.0/16 into 2 equal /17 subnets (32,766 usable hosts each).

# CIDR Network First Usable Last Usable Broadcast Hosts
1 172.17.0.0/17 172.17.0.0 172.17.0.1 172.17.127.254 172.17.127.255 32,766
2 172.17.128.0/17 172.17.128.0 172.17.128.1 172.17.255.254 172.17.255.255 32,766

Common Use Cases

  • Docker default bridge network (docker0)
  • Containers running without an explicit --network flag
  • Local development with Docker Compose
  • Conflict diagnosis when Docker breaks VPN connectivity

Code Examples

Terraform
# To change Docker's default bridge, edit /etc/docker/daemon.json:
# {
#   "bip": "172.26.0.1/16"
# }
# Then restart Docker: sudo systemctl restart docker

# Docker Compose — use a custom bridge to avoid conflicts
networks:
  app_net:
    driver: bridge
    ipam:
      config:
        - subnet: 172.26.0.0/16
Shell / CLI
# Inspect Docker bridge network
docker network inspect bridge \
  --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}'

# Run a container and check its IP
docker run --rm alpine ip addr show eth0

/16 Subnet Reference

Total IPs 65,536
Usable Hosts 65,534
Subnet Mask 255.255.0.0
Wildcard 0.0.255.255

Calculate Another