[Docker] Error response from daemon: driver failed programming external connectivity on endpoint, port is already allocated 대처 방법 (port 강제 종료)
Greenplum and PostgreSQL Database 2018. 9. 24. 23:30
도커 컨터이너를 잘 사용하다가 컴퓨터를 껐다가 다시 켜고서 docker start 를 다시 하면 포트가 이미 할당되어 있다(port is already allocated) 면서 에러가 발생하는 경우가 있습니다.
저의 경우, 도커로 Greenplum Database + MADlib + PL/R + PL/Python 설치되어 있는 gpdb-ds 도커 컨터이너를 실행하려고 하니 아래와 같은 에러 메시지가 떴습니다.
(추측컨데, docker를 정상적으로 종료하지 않고 그냥 컴퓨터를 막 꺼버린 경우에 이런 에러가 발생하는거 아닌가 싶습니다.)
Last login: Wed Sep 19 21:29:53 on ttys002 ihongdon-ui-MacBook-Pro:~ ihongdon$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a0452a877e8c hdlee2u/gpdb-analytics "/usr/sbin/sshd -D" 4 weeks ago Exited (128) 8 days ago gpdb-ds a041b74fa56f wordpress "docker-entrypoint.s…" 9 months ago Exited (128) 9 months ago 0.0.0.0:32769->80/tcp wordpress 39aabe32259a mysql:5.7 "docker-entrypoint.s…" 9 months ago Exited (0) 9 months ago wordpressdb 5019a3411cc0 ubuntu:16.04 "/bin/bash" 9 months ago Exited (0) 6 weeks ago my_ubuntu ihongdon-ui-MacBook-Pro:~ ihongdon$ ihongdon-ui-MacBook-Pro:~ ihongdon$
ihongdon-ui-MacBook-Pro:~ ihongdon$ docker start gpdb-ds Error response from daemon: driver failed programming external connectivity on endpoint gpdb-ds (d519c381360008f0ac0e8d756e97aeb0538075ee1b7e35862a0eaedf887181f1): Error starting userland proxy: Bind for 0.0.0.0:5432 failed: port is already allocated
|
이번 포스팅에서는 도커를 사용할 때 "포트가 이미 할당되어 있어서 연결에 실패했습니다 (port is already allocated)" 에러가 발생했을 때 대처 방법을 소개하겠습니다.
(1) 5432 포트가 사용 중인지 여부 확인하기 : sudo lsof -i :5432
port 번호는 docker run 할 때 할당했던 port 번호를 입력해주세요. 저는 5432 로 했었기에 5432 입력했습니다.
ihongdon-ui-MacBook-Pro:~ ihongdon$ sudo lsof -i :5432 Password: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME postgres 93 postgres 4u IPv6 0x92aed4eef954d8e1 0t0 TCP *:postgresql (LISTEN) postgres 93 postgres 5u IPv4 0x92aed4eef9554549 0t0 TCP *:postgresql (LISTEN)
ihongdon-ui-MacBook-Pro:~ ihongdon$
|
postgresql 두 개가 5432 port 를 점유하고 있네요.
(2) 이미 할당된 port 죽이기 : sudo kill -15 93
ihongdon-ui-MacBook-Pro:~ ihongdon$ ihongdon-ui-MacBook-Pro:~ ihongdon$ sudo kill -15 93
ihongdon-ui-MacBook-Pro:~ ihongdon$
|
죽여, 살려 하니깐 좀 말이 과격한데요, ^^; 원치 않게 자리를 점하고 있던 좀비 port를 죽였습니다(kill).
(1)번에서 했던 방법으로 5432 번호에 할당된 port를 조회해 볼까요? 아무것도 없네요.
ihongdon-ui-MacBook-Pro:~ ihongdon$ sudo lsof -i :5432
ihongdon-ui-MacBook-Pro:~ ihongdon$
|
(3) 도커 컨터이너 시작하기 : docker start container_name
ihongdon-ui-MacBook-Pro:~ ihongdon$ docker start gpdb-ds gpdb-ds ihongdon-ui-MacBook-Pro:~ ihongdon$ ihongdon-ui-MacBook-Pro:~ ihongdon$ ihongdon-ui-MacBook-Pro:~ ihongdon$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a0452a877e8c hdlee2u/gpdb-analytics "/usr/sbin/sshd -D" 4 weeks ago Up 6 seconds 0.0.0.0:5432->5432/tcp, 0.0.0.0:28080->28080/tcp gpdb-ds a041b74fa56f wordpress "docker-entrypoint.s…" 9 months ago Exited (128) 9 months ago 0.0.0.0:32769->80/tcp wordpress 39aabe32259a mysql:5.7 "docker-entrypoint.s…" 9 months ago Exited (0) 9 months ago wordpressdb 5019a3411cc0 ubuntu:16.04 "/bin/bash" 9 months ago Exited (0) 6 weeks ago my_ubuntu
ihongdon-ui-MacBook-Pro:~ ihongdon$ ihongdon-ui-MacBook-Pro:~ ihongdon$ ihongdon-ui-MacBook-Pro:~ ihongdon$ docker exec -it gpdb-ds /bin/bash [root@mdw /]# [root@mdw /]# [root@mdw /]# su gpadmin [gpadmin@mdw /]$ [gpadmin@mdw /]$ [gpadmin@mdw /]$ gpstart -a 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Starting gpstart with args: -a 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Gathering information and validating the environment... 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Greenplum Binary Version: 'postgres (Greenplum Database) 5.10.2 build commit:b3c02f3acd880e2d676dacea36be015e4a3826d4' 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Greenplum Catalog Version: '301705051' 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[WARNING]:-postmaster.pid file exists on Master, checking if recovery startup required 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Commencing recovery startup checks 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Have lock file /tmp/.s.PGSQL.5432 but no process running on port 5432 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-No Master instance process, entering recovery startup mode 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Clearing Master instance lock files 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Clearing Master instance pid file 20180924:13:03:26:000040 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance in admin mode 20180924:13:03:27:000040 gpstart:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information 20180924:13:03:27:000040 gpstart:mdw:gpadmin-[INFO]:-Obtaining Segment details from master... 20180924:13:03:27:000040 gpstart:mdw:gpadmin-[INFO]:-Setting new master era 20180924:13:03:27:000040 gpstart:mdw:gpadmin-[INFO]:-Commencing forced instance shutdown 20180924:13:03:29:000040 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance in admin mode 20180924:13:03:30:000040 gpstart:mdw:gpadmin-[INFO]:-Obtaining Greenplum Master catalog information 20180924:13:03:30:000040 gpstart:mdw:gpadmin-[INFO]:-Obtaining Segment details from master... 20180924:13:03:30:000040 gpstart:mdw:gpadmin-[INFO]:-Setting new master era 20180924:13:03:30:000040 gpstart:mdw:gpadmin-[INFO]:-Master Started... 20180924:13:03:30:000040 gpstart:mdw:gpadmin-[INFO]:-Shutting down master 20180924:13:03:31:000040 gpstart:mdw:gpadmin-[INFO]:-Commencing parallel segment instance startup, please wait... .. 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:-Process results... 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:----------------------------------------------------- 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:- Successful segment starts = 2 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:- Failed segment starts = 0 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:- Skipped segment starts (segments are marked down in configuration) = 0 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:----------------------------------------------------- 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:-Successfully started 2 of 2 segment instances 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:----------------------------------------------------- 20180924:13:03:33:000040 gpstart:mdw:gpadmin-[INFO]:-Starting Master instance mdw directory /data/master/gpseg-1 20180924:13:03:34:000040 gpstart:mdw:gpadmin-[INFO]:-Command pg_ctl reports Master mdw instance active 20180924:13:03:34:000040 gpstart:mdw:gpadmin-[INFO]:-No standby master configured. skipping... 20180924:13:03:34:000040 gpstart:mdw:gpadmin-[INFO]:-Database successfully started [gpadmin@mdw /]$ [gpadmin@mdw /]$ |
다시 잘 실행되네요. ^^
많은 도움이 되었기를 바랍니다.
---------------
도커 컨테이터로 Greenplum Database + MADlib + PL/R + PL/Python 사용환경을 간단하게 구성하고 싶은 분은 http://rfriend.tistory.com/379 포스팅을 참고하세요. 10분만 투자하면 됩니다.