일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ubuntu
- CentOS
- SSL
- Tomcat
- nginx
- Maria
- haproxy.cfg
- youtube-dl
- centos7
- 도커
- HLS
- yum
- Cent
- MariaDB
- phpmyadmin
- vsftpd
- https
- 8443
- firewall
- iptables
- docker-compose
- 방화벽
- db
- 인증서
- YouTube
- mysql
- mount
- letsencrypt
- haproxy
- docker
- Today
- Total
개발자의뇌
docker vsftpd 설치/사용 시 유의점 본문
CentOS 7 에서 vsftpd 사용시 docker-compose 실행이 지연되는 현상을 발견했다.
하여 docker-compose --verbose 명령으로 확인해 보았더니 아래와 같은 로그가 보인다.
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/networks/vsftpd_default/disconnect HTTP/1.1" 200 0
compose.cli.verbose_proxy.proxy_callable: docker disconnect_container_from_network -> None
compose.cli.verbose_proxy.proxy_callable: docker connect_container_to_network <- ('412fdc941680cbe260c07a5f9164650eefd93514edcef0ac33530b5a68c0c220', 'vsftpd_default', aliases=['vsftpd-tbo', '412fdc941680'], ipv4_address=None, ipv6_address=None, links=[], link_local_ips=None)
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.22/networks/vsftpd_default/connect HTTP/1.1" 200 0
compose.cli.verbose_proxy.proxy_callable: docker connect_container_to_network -> None
compose.cli.verbose_proxy.proxy_callable: docker start <- ('412fdc941680cbe260c07a5f9164650eefd93514edcef0ac33530b5a68c0c220')
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
compose.parallel.feed_queue: Pending: set()
... 이 메시지가 계속 올라가면서 결국 docker-compose time out 이 걸린다.
혹시나 하여 ps 에서 docker 로 검색해 봤더니 아래와 같이 docker-proxy 가 무진장 많이 뜬 걸 확인하였다.
root 49513 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30010 -container-ip 172.18.0.2 -container-port 300xxxxxxx 엄청 많이 등록됨.
root 49527 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30009 -container-ip 172.18.0.2 -container-port 30009
root 49541 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30008 -container-ip 172.18.0.2 -container-port 30008
root 49555 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30007 -container-ip 172.18.0.2 -container-port 30007
root 49569 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30006 -container-ip 172.18.0.2 -container-port 30006
root 49583 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30005 -container-ip 172.18.0.2 -container-port 30005
root 49597 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30004 -container-ip 172.18.0.2 -container-port 30004
root 49609 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30003 -container-ip 172.18.0.2 -container-port 30003
root 49623 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30002 -container-ip 172.18.0.2 -container-port 30002
root 49637 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30001 -container-ip 172.18.0.2 -container-port 30001
root 49651 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 30000 -container-ip 172.18.0.2 -container-port 30000
root 49665 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 21 -container-ip 172.18.0.2 -container-port 21
root 49679 49203 0 20:10 ? 00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 20 -container-ip 172.18.0.2 -container-port 20
원인을 분석해 보니 vsftpd pasv 모드로 열 때 포트 range 를 등록해 주는데 9999의 포트를 등록하였다.
이럴 경우 docker-compose 는 docker-proxy 로 포트 range를 전부 열어주는 것 같다.
compose.parallel.feed_queue: Pending: set() 명령이 docke-proxy 를 설정하는 중인것 같고
즉 9999의 포트를 docker-proxy 로 열기 위해 9999개의 프로세스를 등록하느라 시간이 걸리고
해당 프로세스를 다 열기 전에 docker-compose가 time out 걸린다.
실제 상용 서비스에 vsftp 설정이 지저분하게 들어가는 것이 싫어서 docker을 사용하려 했지만
만약 서버가 재시작 되거나 도커가 다시 올라올 때 마다 저렇게 포트를 하나하나 열고 있는 경우
상용 서비스 품질에 영향이 있을 것이다.
docker의 포트 오픈은 포트 범위가 클 수록 도커 실행 시간을 오래 점유한다.
관련 내용들을 찾아보았더니 docker 1.7 버전부터는 docker-proxy 를 disable 할 수 있도록 하였다.
# CentOS 7 / docker-proxy 실행 disable 하기
vi /etc/docker/daemon.json
{
"userland-proxy": false
}
# docker 재시작
systemctl restart docker
docker-proxy 관련 내용은 아래 자세히 설명해 놓은 글이 있어서 남긴다.
https://bluese05.tistory.com/53
'개발 > docker' 카테고리의 다른 글
docker로 vsftpd 간단하게 설치하기 (0) | 2020.07.03 |
---|---|
docker-compose mariadb, phpmyadmin, tomcat (0) | 2019.06.07 |
도커 - CentOS 설치 (0) | 2019.06.03 |
도커 자주 사용하는 명령어 정리 (0) | 2019.06.01 |
docker-compose mariadb phpmyadmin 설치/연동 하기 (0) | 2019.06.01 |