오늘 무려 장장 10시간 가량 뻘짓을 하게한 mac os el capitan 에서
docker 에 gitlab을 올려서 외부에서 접속하는 방법을
짜증나서 포스팅 해두려함

Docker 설치 및 실행

  • Docker 설치
  • Docker-Machine 생성 & 실행
  • Docker-Machine Active
  • Docker-Machine ip 확인
  • Docker-Machine ssh 접속
$ docker-machine create default //default 이름의 가상머신(virtualbox) 생성 자동생성 됐던거같은데 안돼있다면 생성

$ docker-machine ls // 생성된 docker-machine 목록 확인

$ docker-machine env default
$ eval $(docker-machine env default) //default docker-machine을 active 이 작업을 할 경우 docker-machine 에 ssh 접속을 하지 않아도 docker 명령어 사용 가능

$ docker-machine ip //docker-machine ip 출력

$ docker-machine ssh default //docker-machine ssh 접속

GitLab 설치

  • GitLab 설치
  • GitLab 실행
  • Gitlab 접속 확인
  • Docker 종료
  • Docker-Machine 종료
docker-machine ssh$ docker pull gitlab/gitlab-ce //gitlab community edition 설치

docker-machine ssh$ sudo docker run --detach \
    --hostname gitlab.example.com \
    --publish 443:443 --publish 32769:80 --publish 22:22 \  
    --name gitlab \
    --restart always \
    --volume /srv/gitlab/config:/etc/gitlab \
    --volume /srv/gitlab/logs:/var/log/gitlab \
    --volume /srv/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest

docker-machine ssh$ docker ps // 실행 중인 docker 확인 -a 할 경우 등록된 모든 docker출력
CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                    PORTS                                                                  NAMES
63e80f4ff6df        gitlab/gitlab-ce:latest   "/assets/wrapper"   7 hours ago         Up 17 minutes (healthy)   0.0.0.0:32770->22/tcp, 0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   gitlab-ce

브라우저 에서 http://docker-machineip:32769

docker-machine ssh$ docker stop gitlab //gitlab 종료

docker-machine ssh$ exit //docker-machine ssh 접속 종료

$ docker-machine stop default //default docker-machine 종료

virtualbox nat 포트 포워딩 추가

  • virtualbox 포트 포워딩 추가

img1 img2

  • elcapitan 포트포워딩 추가
  • Docker-Machine 실행
  • GitLab 실행
virtualbox default 머신 선택 -> 설정 -> 네트워크 -> 어댑터1 -> nat -> 고급 -> 포트포워딩 -> 추가 rule : http hostport : 32769 virtualport : 32769

$ echo "rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 32769" | sudo pfctl -ef-

$ docker-machine start default
$ docker-machine ssh default
$ docker restart gitlab

외부에서 http://PCIP 접속하여 확인

elcapitan 포트포워딩 추가방법 2

1.
$ sudo vi /etc/pf.anchors/forwarding-name

//추가
rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 32769
//필요한 만큼 추가
rdr pass inet proto tcp from any to any port 443 -> 127.0.0.1 port 32771

2.
$ sudo vi /etc/pf.conf

//추가
rdr-anchor "anchor-name"
load anchor "anchor-name" from "/etc/pf.anchors/forwarding-name"

3.
$ sudo pfctl -ef /etc/pf.conf
pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.

No ALTQ support in kernel
ALTQ related functions disabled
pfctl: pf already enabled

pfctl: pf already enabled <-- 뜨면 성공

Docker-Machine ssh 접속 후 Gitlab 설정파일 접근 방법

  • 기본으로 ssh로 Docker-Machine에 접속하면 docker 내부의 gitlab 관련 정보를 볼수 없음
설정파일 위치 : /etc/gitlab/gitlab.rb

$ sudo docker exec -it gitlab /bin/bash <-- git사용자로 변경
or
$ sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb <- 바로 설정파일 vi로 오픈