본문 바로가기

IT/클라우드

Oracle Cloud 에서 도커로 wiki.js 올려보기

반응형
ROOT 패스워드 변경
sudo passwd

 

 

우분투 패키지 관리툴 upgrade, update
apt upgrade
apt update

우분투에서 패키지를 관리하는 툴로 apt-get과 apt-cache를 주로 사용해 왔습니다. 요즘에는 두 명령을 결합한 명령이 apt를 주로 사용합니다.

 

apt 명령에 대해서는 잘 정리된 블로그가 있어 남겨둠. 참고바람. 

출처 : taewan.kim/tip/apt-apt-get/

 

Ubuntu 패키지 관리 툴: apt 사용법

우분투 패키지 관리 툴인 apt와 apt-get의 차이를 알아보고 사용법을 정리합니다.

taewan.kim

 

 

net tools 설치
apt install net-tools

 

 

Docker 설치하기

출처 : docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

우분투 18.04 설치 요구사항에 별 문제 없음.

 

우분투에서 도커 설치방법은 공식문서상 3가지를 제시하고 있다. 

 

  1. 레파지토리에서 설치 (일반적으로 추천하는 방법)
  2. DEB 패키지파일 다운후 메뉴얼 설치 (인터넷이 제한된 곳에서 설치시)
  3. 개발 또는 테스트 환경일때는 convenience script를 사용 (뭔지 잘 모르겠음)

공식문서상에서도 추천하는 레파지토리 방식을 사용하여 설치해보자. 

향후 레파지토리를 이용해 설치/업데이트가 가능하다고 한다.

(참고로 경험상 설치 편의성은 2번이 좋음 )

 

 

레파지토리 설정하기

 

- apt update 수행후 레파지토리 사용관련 패키지들을 설치
- Update the
apt package index and install packages to allow apt to use a repository over HTTPS:

$ sudo apt-get update 
$ sudo apt-get install \ 
	apt-transport-https \ 
    ca-certificates \ 
    curl \ 
    gnupg-agent \ 
    software-properties-common

 

 

 

- GPG key 추가 후 확인

- Add Docker’s official GPG key:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
$ sudo apt-key fingerprint 0EBFCD88
pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
sub   rsa4096 2017-02-22 [S]

 

 

 

 

- 레파지토리 추가(아키텍쳐별 상이)

- Use the following command to set up the stable repository. To add the nightly or test repository, add the word nightly or test (or both) after the word stable in the commands below. 

 

########### x86_64 / amd64 ###########
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

########### armhf ###########
$ sudo add-apt-repository \
   "deb [arch=armhf] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

 

 

도커엔진 설치하기 - INSTALL DOCKER ENGINE

 

- apt update 수행 후 도커 패키지 설치

- Update the apt package index, and install the latest version of Docker Engine and containerd, or go to the next step to install a specific version:

 $ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io

 

- 도커엔진 설치확인 from hello-world image

- Verify that Docker Engine is installed correctly by running the hello-world image.

$ sudo docker run hello-world

 

docker compose 설치

출처 :  docs.docker.com/compose/

 

Overview of Docker Compose

 

docs.docker.com

docker compose 설명

docker compose는 여러개의 컨테이너를 링크하여 운용하는 경우 유용하다.

(web서버 컨테이너와 db서버 컨테이너 연동 등)

yaml 파일을 작성해두면 컨테이너 기동커맨드와 순서등을 지정하여 문제없이 컨테이너 기동이 가능하다. 

 

 

레파지토리에서 다운받기
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

 

 

권한설정
sudo chmod +x /usr/local/bin/docker-compose

 

 

Docker Compose 설치후 버전확인
docker-compose version

 

 

 

 

스토리지 관리

따로 지정하지 않을경우 기본적으로 컨테이너 내부에 파일이 저장되며, 이는 휘발성 데이터이므로 주의가 필요함

 

docs.docker.com/storage/

 

Manage data in Docker

 

docs.docker.com

컨테이너 데이터 관리를 위해 아래 방법이 사용가능

  • docker volume

  • bind mounts

  • tmpfs mounts

 

 

docker volume 생성
# 볼륨생성
docker volume create vol_name

# 볼륨inspect
docker volume inspect vol_name

# 볼륨내역
docker volume ls

 

 

NGINX 웹서버 올려보기

docker hub에서 nginx 공식이미지 pull (별도의 tag 미지정시 latest 이미지로 받는다)

docker pull nginx

 

 

docker image 리스트 확인

내려받은 이미지 확인

docker image ls

 

docker 컨테이너 생성/실행
docker run -d -p 80:80 -v nginx_data:/usr/share/nginx/html --name nginx_server nginx

# -p : 외부로 포트노출(포트포워딩 같은 개념)
# -v : 볼륨맵핑. 여기서 바로 docker volume 생성도 가능하다.
# --name : 컨테이너명

 

nginx home 폴더와 도커볼륨 맵핑 확인

 

nginx 웹서버 확인

오라클 클라우드 IP와 포트(80)으로 접속해보면 정상적으로 웹서버 기동된 모습 확인가능

단, 오라클 클라우드쪽에서 포트포워딩 작업을 하지 않으면 접속이 안될 것이다.

 

 

 

Oracle Cloud 네트워크 수신규칙 추가

 

인스턴스내 공용서브넷 > 보안목록 > 수신규칙 > 노출포트 지정

※ 앞서 docker 컨테이너 실행시 80으로 맵핑 했고 80은 기존재하므로 이 작업은 불필요하다. 향후 보안강화를 위해 8080으로 맵핑할 예정이므로 수신규칙에 8080 추가하였음.

 

 

 

오픈소스 개인위키(wiki.js) 올려보기

단일 컨테이너를 사용하는 경우는 사실 많지 않으므로, 

컨테이너간 참조하여 운영되는 사례로 실습해보도록 하자. 

간단한 웹서버와 DB서버로 구성된 개인위키를 올려볼 것이다. 

 

개인위키 종류는 상당히 많으므로 본인에게 맞는걸 찾으려면 아래 비교사이트 참조하길 바람. 

www.wikimatrix.org/

 

Compare Them All | WikiMatrix

The Wiki Comparison Site CompareWikis Find the right Wiki software for your needs. WikiMatrix helps you compare the features of different Wikis in a comfortable side-by-side table. Select the Wikis you're interested in below and click the compare button. G

www.wikimatrix.org

 

난 소개된 제품중 wiki.js를 설치해볼 것이다. 

 

설치방법은 공홈에서 확인할수 있으며, 이 공홈역시 wiki.js로 만들어져 있으니 미리 경험해볼수 있다. 

docs.requarks.io/

 

Wiki.js

Official Documentation for 2.x

docs.requarks.io

필요한 이미지는 wiki랑 db(mysql)임. postgresql도 되지만 난 mysql 

컨테이너 기동관리는 docker compose를 사용할 것이다. 

이미지는 미리 pull 받아놔도 되지만 yml파일에 기술해둘 경우 없으면 알아서 받기때문에 yml만 작성하도록 하자. 

 

공식 설치 문서상에는 postgresql용으로 docker compose 파일 작성방법을 명시해두고 있으니 적당히 수정해주면 됨.

version: "3"
services:

  db:
    image: postgres:11-alpine
    environment:
      POSTGRES_DB: wiki
      POSTGRES_PASSWORD: 
      POSTGRES_USER: wikijs
    logging:
      driver: "none"
    restart: unless-stopped
    volumes:
      - db-data:/var/lib/postgresql/data

  wiki:
    image: requarks/wiki:2
    depends_on:
      - db
    environment:
      DB_TYPE: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_USER: wikijs
      DB_PASS: 
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "80:3000"

volumes:
  db-data:

 

적당한곳에 도커관련 파일용 폴더생성후 그곳에 docker-compose.yml 파일을 작성해둔다. 

mysql 버전은 아래와 같이 수정하였다. 

version: "3"
services:
  db:
    image: mysql:latest
    environment:
      MYSQL_DATABASE: wiki
      MYSQL_PASSWORD: 
      MYSQL_USER: wikijs
	  MYSQL_ROOT_PASSWORD: 
    restart: unless-stopped
    volumes:
      - wikidbmysql-data:/var/lib/mysql

  wiki:
    image: requarks/wiki:2.4
    depends_on:
      - db
    environment:
      DB_TYPE: mysql
      DB_HOST: db
      DB_PORT: 3306
      DB_USER: wikijs
      DB_PASS: 
      DB_NAME: wiki
    restart: unless-stopped
    ports:
      - "5679:3000"

volumes:
  wikidbmysql-data:

docker-compose up -d

사전에 기술해둔 docker compose 파일 내용에 따라 이미지 pull과 각 설정에 따라 컨테이너를 참조관계에 따라 순서대로 기동해준다. 

(wiki 컨테이너의 경우 db 컨테이너를 참조해야 하기에, db컨테이너가 먼저 기동되어야 한다.)

 

이제 브라우져를 통해 접속해보자. 

docker compose 파일상 5679 포트로 외부노출하였으므로 그걸로 접속해본다. 

 

 

안된다. 

아 오라클 클라우드에서 포트작업을 해줘야했지...

 

수신규칙을 추가해준다

 

잘된다. 

반응형