Я разрабатываю тесты с Selenium. В настоящее время я использую официальное изображение selenium / standalone-chrome: 3.11.0 . Я запускаю только Selenium внутри Docker-контейнера. Сам проект компилируется на хост-машине (тесты подключаются к открытому порту контейнера):
$ docker run -p 4444:4444 selenium/standalone-chrome:3.11.0
$ curl -v localhost:4444
* Rebuilt URL to: localhost:4444/
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 4444 (#0)
> GET / HTTP/1.1
> Host: localhost:4444
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
...
Но я бы хотел скомпилировать и протестировать проект полностью внутри Docker-контейнера. Поэтому я создал свой собственный образ на selenium/standalone-chrome:3.11.0
. Мой (упрощенный) Dockerfile выглядит так:
FROM selenium/standalone-chrome:3.11.0
RUN sudo apt-get --assume-yes --quiet update
RUN sudo apt-get --assume-yes --quiet install curl
CMD ["curl", "-v", "localhost:4444"]
Как видно из файла, я пытаюсь подключиться к порту 4444 внутри контейнера. Когда я запускаю образ, например ::
docker build -t test . && docker run test
Я получаю:
* Rebuilt URL to: localhost:4444/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 127.0.0.1...
* connect to 127.0.0.1 port 4444 failed: Connection refused
* Trying ::1...
* Immediate connect fail for ::1: Cannot assign requested address
* Trying ::1...
* Immediate connect fail for ::1: Cannot assign requested address
* Failed to connect to localhost port 4444: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 4444: Connection refused
Почему я не могу подключиться к Selenium, который запускается внутри контейнера из того же контейнера?