Infra/Docker

[Docker] CentOS 깃 서버(Git Server) 컨테이너 구축하기

당닝 2021. 11. 22. 14:56
728x90

다른 컨테이너의 작업물을 깃 서버 컨테이너에 올릴 수 있도록 할 것이다

 

 

[CentOS] Linux Git Server 구축하기

목차 1. Git 설치 2. 저장소 생성 3. 계정 생성 4. git 서버로 키 등록 5. 테스트 1. Git 설치 yum install git root 계정으로 로그인한 후, yum install git을 입력하면 설치가 시작된다. 중간중간 Is this ok [y..

da2uns2.tistory.com

다음 글을 참고해 깃 서버를 구축할 것이다.

 

 

 

docker run --privileged -d --name mycent7 centos:7 init

centos 환경에서 깃 서버를 구축하기 위해 먼저 centos 이미지를 통해 컨테이너를 생성한다.

 

docker exec -it mycent7 bash

mycent7을 실행시킨다.

 

systemctl --version
yum -y install httpd
systemctl start httpd
systemctl status httpd

systemctl이 잘 작동하는지 확인해본다.

만약, 위 명령어를 입력했을 때 Failed to get D-Bus connection: Operation not permitted 오류가 나온다면 다른 컨테이너에서 연결이 거부된다.

 

참고로, 나는 docker-compose를 이용해 centos 컨테이너를 만들었을 때 다음과 같은 오류가 발견하였다. docker-compose를 사용하면서 저 오류를 해결할 수 있는 방법은 아직 찾지 못했다. docker-compose를 사용하지 않고, 위 과정을 따른다면 같은 오류가 발생하지 않는다.

 

yum install git -y

git을 사용하기 위해 centos 환경에 git을 설치한다.

 

mkdir -p /opt/git/project.git
git init --bare /opt/git/project.git

깃 디렉토리를 생성하고, 해당 디렉토리를 git 환경으로 초기화한다.

 

ssh-keygen

ssh 키를 만든다.

 

yum install net-tools

네트워크 상태를 확인하기 위해 net-tools를 설치한다.

 

yum install openssh-server

ssh 설정을 위해 openssh-server을 설치한다.

 

netstat -ntl

네트워크 상태를 확인한다.

 

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN

현재는 다음과 같이 되어있을 것이다.

 

systemctl start sshd
systemctl status sshd

두 명령어를 통해 ssh를 실행시킨다.

 

netstat -ntl

다시 네트워크 상태를 확인해본다.

 

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

다음과 같이 22번 포트가 열렸다면 성공이다.

 

vi /etc/ssh/sshd_config

PermitRootLogin을 찾아 주석을 해제하고 yes로 바꿔준다. >> PermitRootLogin yes

 

passwd root

root의 비밀번호를 정해준다.

 

 

 

초기 세팅은 끝났다. 이제 다른 컨테이너에서 방금 만든 git 서버에 push할 것이다.

참고로, 두 컨테이너는 같은 network를 가져야한다.

 

 

[Docker] Docker Network 사용하기

Docker Network 도커 컨테이너 간 연결을 하기 위해서는 Docker Network를 사용해야 한다. 즉, Docker Network란 같은 호스트 내에서 실행중인 컨테이너 간 연결할 수 있도록 돕는 논리적 네트워크 개념이다.

da2uns2.tistory.com

다음 글을 참고해, 네트워크를 생성하고 두 컨테이너를 같은 네트워크를 갖도록 세팅한다.

 

 

 

docker exec -it 컨테이너명 bash

exec 명령어로 컨테이너를 실행시킨다.

 

git config --global user.email "이메일"
git config --global user.name "이름"

사용자의 이메일과 이름을 입력한다.

 

mkdir proj
cd proj

git을 clone할 proj 디렉토리를 생성하고 proj 위치로 경로이동한다.

 

root@1358d29255ff:/proj# git clone ssh://root@mycent7:/opt/git/project.git
Cloning into 'project'...
The authenticity of host 'mycent7 (172.22.0.4)' can't be established.
ECDSA key fingerprint is SHA256:Nm+ziHPDrz7jT8GkbCxN1sZmz1uV+ONAPKDT6RQIWl4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'mycent7,172.22.0.4' (ECDSA) to the list of known hosts.
root@mycent7's password:
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)

git clone ssh://root@깃컨테이너명:/opt/git/project.git을 입력해 clone한다.

Are you sure you want to continue connecting (yes/no/[fingerprint])? 에서 yes를 입력하고,

root@mycent7's password: 에서 아까 설정한 비밀번호를 입력한다.

 

이후, ls를 해보면 project가 생성되었을 것이다.

 

cp app.jar /proj/project

git에 commit할 파일을 이 프로젝트 폴더에 복사한다.

 

git add .
git commit -m "커밋 메시지"
git push origin master

다음 명령을 통해 변경사항을 서버에 반영한다.

 

 

 

[root@e479df48cbaf project.git]# git log
commit afb0c55c2a8305344ba677d78f895e3b460cf96c
Author: parkdaeun <parkdaeun@example.com>
Date:   Mon Nov 22 05:53:18 2021 +0000

    커밋 메시지

깃 서버 컨테이너로 돌아가, git log를 입력하면 다음과 같이 반영된 커밋이 나타날 것이다.

728x90