티스토리 뷰

지난 시간엔 Windows에서 Docker를 설치하고 Docker가 정상적으로 동작하는지 확인하는 시간을 가졌다.

간혹 "저 설치가 안되요! 이런저런 오류메시지가 나옵니다!" 하시는 분들은 본인의 PC가 노트북이 아닌가 생각해볼 필요가 있다. 노트북의 경우 제한된 공간안에 PC의 기능을 최대한 구현하기 위해 마더보드에 있는 가상화 옵션이 내려가 있거나 없는 경우가 있다. 그런 경우엔 가상화 옵션을 Enable로 바꿔주거나 컴퓨터를 데스크탑으로 바꿔서 테스트 해보길 바란다.




저번 시간 설치 중간에 컴퓨터가 Hyper-V 기능을 활성화 할거냐고 물어본 이유가 나는 VirtualBox를 사용하기 위해서 Windows에서 제공하는 Hyper-V 기능을 중지했기 때문이었는데 Docker에서는 VirtualBox와는 다르게 Hyper-V를 이용해 가상 머신을 만들어내 활용하기 때문인 것 같다. 그것과 관련한 자세한 이용방법은 아래의 링크를 따라가서 확인하자.

(https://docs.docker.com/machine/drivers/hyper-v/)


오늘은 전에 이야기 했던데로 Gogs를 설치해볼 예정이다.


Gogs에 대해서 모르시는 분들을 위해 사전설명을 진행하도록 하겠다.

만약 이 글을 읽는 독자가 개발자라면 Github라는 말을 들어보기도 했을 것이고 이용도 해봤을 것이다. Git이라는 형상관리 프로그램을 온라인에서 아주 손쉽게 이용할 수 있도록 서비스를 제공해주는 사이트다.

Github는 회원가입하고 자신 만의 프로젝트 만들어 소스코드를 간편하게 업로드 할 수 있게 해준다. 하지만, 단점은 남에게 보여지기 꺼려지는 개인 프로젝트이거나 회사에서 운영하는 노출되면 안되는 소스를 Private 모드로 이용하려면 돈을 내고 유료 저장소를 이용해야한다. 

Git 이라는건 앞에서 말했다시피 형상관리 프로그램이다. 그 말은 곧 SVN 과 같이 서버를 만들어 개인이 운영할 수 있는데 Github는 Git 서버를 회사차원에서 운영하고 있다는 점이 다를 뿐이다.

Gogs는 이런 Github에서 서비스 하는 것을 개인이 손쉽게 운용할 수 있도록 하는 무료(!) 서버 프로그램이다. 이거 만드신 분들은 천국에 갈거다. 분명.

이 Gogs를 우리가 셋팅해 놓은 Docker 위에서 돌아가는 것을 오늘 만들어볼 거다.


매우 간단하니 잘 따라해보길 바란다.


일단 구글에서 Gogs for docker라고 검색해본다.


저기 나와있는 GitHub에 있는 저 링크를 따라간다.



들어가보면 README.md 내용이 나올텐데 저기에 있는 Usage 항목을 잘 따라하면 만사 오케이다.


그럼 일단 docker pull gogs/gogs 명령을 실행한다.



그러면 docker Hub에 올라가있는 gogs 이미지를 다운로드를 받는데 이때 gogs를 운용하기 위한 다른 내용들도 같이 다운로드 한다.

이러고 나면 gogs 내부에 저장할 저장소를 미리 만들어야하는데 그걸 docker 컨테이너 외부에 공유폴더처럼 사용할 거다. 공유폴더로 사용할 폴더를 하나 만들자.


나는 D 드라이브에 하나 만들거다.



이렇게 만들고 난 뒤에 3번째 명령어를 입력하자.



위의 명령어의 의미는 다음과 같다.


"도커를 실행한다. 이름은 gogs로 할게(--name=gogs). 포트는 외부에서 접근할 땐 10022로 접근하면 도커 컨테이너에 22번 포트로 포워딩 해줘(-p 10022:22). 그리고 10080으로 접근하면 3000번으로 포워딩 해줘(-p 10080:3000). 외부 볼륨은 D 드라이브의 gogsShared 라는 디렉토리와 컨테이너 내부의 /data 디렉토리를 연결해줘(-v D:\gogsShared:/data). 아참, 도커 이미지 이름은 gogs/gogs야."


라는 뜻이다. Docker는 외부 포트와 내부 포트를 이렇게 실행 옵션에 포함 시켜서 지정할 수 있다. 그리고 여러 포트를 위와 같이 한번에 지정할 수도 있다. 그리고 컨테이너 내부의 디렉토리와 외부의 디렉토리를 서로 연결짓는 것도 옵션으로 지정할 수 있다.


내가 Docker 이미지, 컨테이너라는 단어들을 사용해서 헷깔려하는 사람이 있을까봐 부연설명을 해야할 것 같다는 생각이 들었다.

아래의 그림을 참고 해서 이미지와 컨테이너, 그리고 포트포워딩에 대한 개념을 잡길 바란다.


이미지 출처: 내가 만듬 아이콘 출처: Flaticon 에서 돈주고 삼

이미지 파일은 일단 그저 설계도면이라고 생각하면 된다. 필요한 자재가 뭐고 어떻게 컨테이너를 만들면 되는지 알려주는 설계도면이라고 이해한다면 컨테이너는 그 구현체라고 생각하면 된다. docker를 이용해 이미지를 만들면 도커는 그 이미지를 이용해 컨테이너를 만들고 서비스를 제공하는 거라고 이해하면 쉽다.


그리고 외부에서 지정된 어떤 포트로 접근하면 도커는 구현된 컨테이너에 미리 설정된 옵션대로 포트 포워딩을 거쳐 컨테이너에 전달하는 과정을 거친다.


이렇게 이해하면 크게 틀리지 않다.


암튼 다시 본론으로 돌아와서 위의 명령어를 실행했다면 아래의 메시지가 미친듯이 화면을 뒤덮고 있을거다.



하지만 놀라지 마라. 걍 개인키가 보호되지 않고 있다고 위험 메시지를 보내는 거니까. 보호 되지 않으면 해킹의 위험이 도사리고 있는게 아니냐고 물어보는 사람이 있을 수가 있는데 걱정마라. 현재 운영체제가 Windows라서 그런거니까. 어차피 윈도우 환경에서 이런 리눅스 서버를 가상으로 띄우는 것도 이상할 뿐더러 만일 띄워서 서비스를 한다고 하더라도 나중에 아까 열어놨던 22번 포트 닫아버리면 접근할 방법이 없으니 걱정 말아라.

그리고 해커들이 여러분들의 PC를 해킹할 목적이 있었다면 이미 랜섬웨어를 깔았을거다. 걱정하지 마라.


암튼 Ctrl + C 키를 눌러 빠져나온 뒤에 아래의 명령을 다시 입력한다.



docker start gogs 명령을 통해 gogs 컨테이너를 다시 실행한다.


그리고 브라우저를 켜고 localhost:10080으로 접속해보자.




Gogs가 정상적으로 동작하고 있는 것을 확인할 수 있다. 데이터베이스 유형을 MySQL말고 SQLite3으로 셋팅하면 별다른 셋팅이 필요하지 않다. SQLite3으로 셋팅하고 확인버튼을 눌러준다.(궂이 자신은 MySQL이나 MS-SQL을 사용할 거라면 알아서 셋팅하길 바란다. 개개인의 환경에 맞춰서 글을 쓰기가 힘들다.)

적절하게 셋팅한 뒤에 git 서버로써 정상적으로 동작하는지 확인해보면


이런 상황에 처한 사람이 있을 수도 있는데 서버 포트를 10080으로 안 바꿔줬기 때문이다.(나도 같은 실수를 저질러 버렸다;;)

그냥 접속주소 포트를 10080으로 바꿔주면 된다.


그리고 지금은 등록된 사용자가 아마 없을 것이므로 회원가입을 진행한다. gogs는 최초회원가입한 사람에게 관리자 권한을 부여한다.



이렇게 등록하고 로그인 해보자

(참고로 사용자 명을 내가 한글로 써놨는데 저거 안된다. 영문으로 써야하더라.. 그래서 걍 평소 쓰는 아이디를 다시 입력했다)



로그인도 잘되고 저장소도 잘 동작한다. 내가 테스트 해봤다.


테스트는 영상으로 올릴 테니 참고 바란다.



위의 영상에서 포트를 일일이 바꾸는게 번거롭고 귀찮은 일이라고 생각한다면 아까 지정한 공유 폴더에(나의 경우엔 gogsShared라고 이름을 지어줬다) gogs/conf/app.ini 파일을 열어서 아래와 같이 수정해주면 된다.




위와 같이 수정하고 Docker 컨테이너를 재시작 해주면 된다.


재시작하고 다시 로그인해서 들어가보면



이렇게 셋팅이 변경된 것을 확인할 수 있다.


아 힘들었다. 다음은 Docker Composer에 대해서 이야기를 해보자.


안녕!

댓글
댓글쓰기 폼