Register to Eureka from Docker with a custom IP

Both previous answers are correct, but I'll make copy-pasting easier.

What you should do is add an environment variable with the host IP when starting your container and in your Spring Boot application.yml file includes it.

application.yml

eureka:
  instance:
    # Necessary for Docker as it doesn't have DNS entries
    prefer-ip-address: true
    # Necessary for Docker otherwise you will get 172.0.0.x IP
    ip-address: "${HOST}"
  client:
    serviceUrl:
      # Location of your eureka server
      defaultZone: http://192.168.0.107:8761/eureka/

Running with Docker

docker run -p <port>:<port> -e HOST='192.168.0.106' <image name>

Running with docker-compose

my_service:
  image: image_name
  environment:
    - HOST=192.168.0.106
  ports:
    - your_port:container_port