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가지를 제시하고 있다.
- 레파지토리에서 설치 (일반적으로 추천하는 방법)
- DEB 패키지파일 다운후 메뉴얼 설치 (인터넷이 제한된 곳에서 설치시)
- 개발 또는 테스트 환경일때는 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 설치
Overview of Docker Compose
docs.docker.com
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
스토리지 관리
따로 지정하지 않을경우 기본적으로 컨테이너 내부에 파일이 저장되며, 이는 휘발성 데이터이므로 주의가 필요함
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서버로 구성된 개인위키를 올려볼 것이다.
개인위키 종류는 상당히 많으므로 본인에게 맞는걸 찾으려면 아래 비교사이트 참조하길 바람.
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로 만들어져 있으니 미리 경험해볼수 있다.
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 포트로 외부노출하였으므로 그걸로 접속해본다.
안된다.
아 오라클 클라우드에서 포트작업을 해줘야했지...
잘된다.
'IT > 클라우드' 카테고리의 다른 글
Oracle Cloud Free Tier 인스턴스 생성하기 (3) | 2020.12.28 |
---|---|
클라우드 VM 접속을 위한 SSH KEY PAIR 생성하기 (moba xterm, putty) (0) | 2020.10.29 |
오라클 클라우드 VM생성 - SSH 접속 가능하게... (5) | 2020.10.29 |