Docker를 사용하여 GitLab 배포
풀 성공 여부 확인
콘텐츠 쓰기
이 파일 디렉터리에서 gitlab_start.sh에 실행 권한을 부여합니다.
주의하세요 포트 사용 여부
gitlab_start.sh 파일을 수정하고 호스트에 매핑된 포트를 8088 또는 다른 비어 있는 포트로 변경합니다.
./gitlab_start.sh 파일을 다시 실행합니다. , 다음과 같이 오류가 보고됩니다.
이전 컨테이너가 실행되지 않았으나 생성되었기 때문입니다.
gitlab_start.sh 파일을 다시 실행하세요.
확인 컨테이너가 성공적으로 시작되었는지 확인합니다.
docker-compose.yml 파일을 생성하고 파일이 있는 폴더에서 docker-compose up -d를 실행합니다.
docker-compose를 미리 설치해야 합니다
docker-compose를 설치합니다
참고: 포트 및 매핑 디렉터리는 필요에 따라 수정할 수 있습니다.
액세스 포트가 열려 있는 경우 80이면 external_url은 포트 번호 추가가 필요 없으며 기본값은 80이다.
3.1 방식으로 생성한 경우 해당 구성 파일을 수정해야 한다
Gitlab이 컨테이너가 실행 중이라면 서비스를 다시 시작하고 원격으로 웹사이트에 접속해 테스트해 보세요
*502에 접속했는데 Gitlab에서 다른 오류가 발생하는 경우 명령어를 사용하여 오류 원인을 확인하세요
e.g.
위 구성 파일을 확인하여 오류 원인을 찾으세요
[이미지 업로드 실패...(image -e9789-1636370071222)]
컨테이너가 성공적으로 시작되었습니다. ip:port에 따라 gitlab에 액세스할 방법이 없습니다.
Tomcat 이미지를 가져옵니다.
8088 포트를 테스트하려면 먼저 gitlab을 일시 중지하세요. 컨테이너
Tomcat 컨테이너를 시작하고 Tomcat 컨테이너의 8080 포트를 호스트의 8088 포트에 매핑합니다.
모든 것이 정상입니다. IP:8088에 액세스하거나 그렇지 않으면 할 수 없습니다. 기존대로 접속하시면 됩니다
기존에 시스템의 방화벽이 닫혀 있었고 다른 서비스도 정상적으로 접속이 가능하기 때문에 방화벽 문제임에는 의심의 여지가 없습니다
방화벽을 켜주세요
접속하기 전에는 정상적으로 접속이 가능했던 서비스도 역시 정상적으로 접속이 되지 않습니다.
서비스의 포트를 개발하여 정상적으로 접속하세요.
포트 8088 열기
다시 방문
Tomcat의 404 페이지로 돌아가기: HTTP 상태 404 – 찾을 수 없음
404이지만 페이지, 그런데 이때 포트는 정상적으로 접근이 가능하다고 나와요
tomcat 컨테이너를 중지하고 gitlab 컨테이너를 다시 실행해 보세요
성공적으로 시작되지는 않았지만 하나입니다 성공에 한걸음 더 다가가세요 :)
이 컨테이너를 삭제하려고 했는데 다시 생성한 후에도 이 오류가 계속 발생했습니다.
여전히 접속이 되지 않습니다. GitLab 내부에 문제가 있는지 확인해주세요
모든 것이 정상입니다
테스트를 위해 다시 Tomcat 컨테이너로 변경했는데 포트 8088이 발견되었습니다 액세스할 수 없습니다.
하지만 호스트 머신에서 로컬 머신으로 ping을 하는 것은 가능합니다
그러나 ip:8088로 변경하는 것은 불가능합니다
위의 내용에 따르면 두 기사, Alibaba Cloud가 제안한 인트라넷 eth0 네트워크 세그먼트는 우연히 Docker의 가상 네트워크 카드의 172 네트워크 세그먼트로 충돌합니다.
제가 사용한 클라우드 서버도 Alibaba Cloud인 것을 확인하고 확인해 보았습니다. ifconfig를 통해
및 Alibaba Cloud의 내부 IP 주소 확인도 172로 시작됩니다.
구성 파일 /etc/docker/daemon.json을 편집합니다. daemon.json 파일이 없으면 새로 만듭니다.
docker 서비스를 다시 시작합니다.
docker0의 주소가 변경된 것을 확인할 수 있습니다.
그러나 docker를 사용하여 시작된 서비스는 기본적으로 docker0을 사용하지만 docker-compose를 사용하여 시작된 서비스는 사용하지 않습니다. 위의 br-12aa369ee4a6은 docker-compose에 의해 시작된 서비스에 해당하며 여전히 네트워크 세그먼트 172에 있음을 알 수 있습니다.
사용자 정의 네트워크 세그먼트(루트에서 지정됨)를 사용하기 위한 docker-compose의 두 가지 방법
이 기사에 따른 방법 2를 사용하여 daemon.json을 수정합니다. 그러나 액세스가 성공하지 못했습니다. 내 환경은 docker:20.10.7, docker-compose:1.24.1
나중에 액세스에 실패한 이유가 docker와 방화벽 간의 관계라는 것을 알았습니다. 방화벽을 끌 수 있습니다. 도커를 열고, 액세스할 수 없으면 방화벽을 엽니다. == 사이를 앞뒤로 테스트합니다.
나중에 방화벽을 닫고 iptable을 열어 보았습니다.
iptables가 활성화된 경우, iptables가 꺼지면 일반 접근이 가능하지만, 켜져 있으면 정상적인 접근이 불가능합니다.
Firewalld가 활성화되면 docker와 Firewalld의 시작과 종료 순서에 따라 방화벽을 켠 상태에서 방화벽에 접근할 수 있는 경우도 있고, 방화벽을 끈 상태에서도 방화벽에 접근할 수 있는 경우도 있습니다.
그러나 컨테이너 내에서는 외부 네트워크에 접근할 수 없으며, 이 문제는 아직 해결되지 않았습니다. 우회적인 해결책은 컨테이너에 대해 호스트 네트워크 모드를 사용하는 것입니다
문제: docker, Firewalld 및 iptables 간의 설정 문제로 의심됩니다
Docker와 IPtables
Docker 포트 매핑 및 외부 접근 불가 문제
Docker 및 IPtables
GitLab에 액세스할 수 없는 또 다른 상황은 포트 매핑 및 구성 파일이 잘못된 경우입니다.
빠른 해결 방법: 호스트 포트 번호와 컨테이너 번호를 동일하게 설정하세요. 아래 블로그를 참고하세요.
GitLab Docker 이미지를 사용하여 GitLab 설치(피트 채우기)
[이미지 업로드 실패...(image-457ad3-1636370071221)]
If 시스템 환경이 정상이고 설치가 매우 원활하며 일반적으로 이상한 문제가 없습니다.
다른 서버에 설치했습니다
Alibaba Cloud CentOS 7.6: 접속은 정상이나, 메모리 부족으로 인해 502 오류가 발생합니다.
Alibaba Cloud Linux 2: 컨테이너에 정상적으로 액세스하지 못할 수 있으며, 컨테이너가 외부 네트워크에 정상적으로 연결하지 못할 수 있습니다. 방화벽과 도커 문제인 것 같습니다.
비밀번호 변경: