2편에서 소개한 mariadb 컨테이너 생성한 대상은 삭제를 해주기 바란다.

그것 보다 더 편한 컨테이너 생성 하는 방법이 있다!

App Tmeplates라는 메뉴의 기능인데 아래와 같이 생성을 하게 되면 바로 사용이 가능 하다.

왼쪽 메뉴에서 "App Templates" 를 선택 해서 오른쪽에 나오는 MariaDB를 선택 한다.

1. 컨테이너 이름을 입력 한다.

2. Root Password를 입력 한다.

maria db 접속 시 사용 하는 "ROOT" 계정의 비밀번호 입력 부분 이다.

3. "Show advanced options" 버튼을 클릭 하면 더 많은 옵션기능을 활용 할 수 있다.

1. host 의 어떤 포트를 mariadb에서 사용 하는 3306 포트와 연결을 할지 설정 한다.

2. 2편에서 본 Volume 를 설정 할 수 있는 옵션 입니다.

3. "Deploy the container" 를 선택 하여 컨테이너를 생성 합니다.

 

컨테이너 생성이 완료 되었으니 mariadb 접속 정상 확인해 봅니다.

mariadb를 설치 하면 db접속 할수 있는 기본 툴중 "HeidiSQL" 로 접속을 해본다.

처음 접속후 왼쪽 하단의 신규 버튼을 클릭 하면 세션이 하나 생성이 된다.

여기서 네트워크 유형 mariadb를 선택

호스트명은 서버에 설정한 도메인이나 ip를 넣어 준다.

ip 확인은 서버에서 ifconfig로도 확인이 가능 하고 cafe24 호스트 관리 화면에서도 확인이 가능 하다.

사용자는 처음 root 만 있으니 "root"를 입력 한다.

암호는 위에서 설정한 루트 패스워드를 입력 하고

포트는 위에서 입력한 host의 포트를 입력 하고 연결 하면 연결이 정상 으로 확인 된다.

 

1편 Ubuntu 20.04 에 도커 설치 하기

2편 도커에 gradle, git, open jdk17, nodejs, react 추가 하기

 

Posted by 블로그하는프로그래머
,

현제 내가 작성하고 있는 포스팅 에서는 도커 유틸중 Portainer를 통해서 이미지를 다운받고 컨테이너를 돌려 보려고 한다.

컨테이너 생성 주기는 아래와 같이 이루어 진다.

1. 이미지 다운로드

2. 볼륨생성

3. 컨테이너 생성

 

1. 이미지 다운로드 방법

- 첫번째 왼쪽 메뉴중 "Images"를 클릭 한다.

- 두번째 이미지 테그를 넣어 준다.

- 이미지 테그를 모를 경우 세번째 도커 허브를 확인 해서 넣어 줘야 합니다.

저는 아래와 같이 테그들로 이미지 대상들을 따운로드 했습니다.

jenkins:2.60.3

mariadb:latest -> 마지막 버전은 latest 로 테그가 생성 됩니다.

node:lts-alpine3.17

openjdk:20-ea-17-jdk

 

2. 볼륨생성

볼륨을 생성 하는 이유는 컨테이너의 저장공간? 과 로컬 서버의 저장 공간의 데이터를 연결 하는 공간으로 이해 하면 될 것 같다.

컨테이너의 경우 바로 삭제가 가능 하기에 컨테이너 안의 데이터가 휘발성으로 삭제가 된다면 복구 하기 어려운 부분이 있다, 이런경우 볼륨을 생성 해서 연결을 하고 로컬에서 관리가 되는 데이터가 있다면 삭제가 안된 데이터를 바로 연결이 가능 한 편의성을 제공 한다.

왼쪽 메뉴중 "Volumes" 메뉴를 클릭 한다.

오른쪽 버튼 중 "Add volume" 클릭 하여 볼륨을 생성 합니다.

필수 값을 입력 하고 "Create the volume" 버튼을 클릭 한다.

생성 된 내용을 확인 한다.

3. 컨테이너 생성

자 이제 직접적으로 서비스가 실행이 되는 컨테이너를 생성 한다.

왼쪽 메뉴 중 "Containers" 클릭 후 "Add container" 버튼을 클릭 하여 컨테이너를 생성 한다.

 

1. 컨테이너 이름

2. 이미지 테그

3. "pulish a new network port" 버튼을 클릭 한다.

로컬 포트와 도커 포트를 연결 하는 기능으로 이해 한다.

4, 5. 포트 번호를 입력 한다. (mariadb 의 경우 기본 포트가 3306 이기에 둘다 3306을 입력 한다.)

 

- "Volumes" 탭을 클릭 한다.

volume 에 이전에 생성한 "mariadbVal - local" 대상을 선택 한다.

 

- "Restart policy" 탭을 클릭 하고 "Restart policy" - "Always" 를 선택 한다.

도커가 재시작 될때 컨테이너도 시작이 되도록 설정 하는 기능 이다.

- "Deploy the container" 버튼 클릭 하여 컨테이너를 생성 한다.

"Container list" 에서 "Quick Actions" 기능은 차례데로 아래와 같은 기능을 지원 한다.

  • Log: 컨테이너 로그
  • Inspect: 상세정보
  • Stats: 자원 사용량(메모리, CPU, 네트워크)
  • Exec Console: 해당 컨테이너 shell 연결

1편 Ubuntu 20.04 에 도커 설치 하기

Posted by 블로그하는프로그래머
,

1) docker pull (이미지이름):(태그)

이미지 가져오는 명령어 (태그 생략 시 latest로 자동 입력됩니다.)

(ex)

1
docker pull centos:7

2) docker images

로컬에 설치된 이미지 확인하는 명령어

(ex)

1
docker images

3) docker run (옵션) (이미지):(태그) (커맨드)

컨테이너 생성 및 실행 명령어(각종 파라미터로 컨테이너의 추가 기능을 설정 가능합니다.)

 

* 옵션

-i : 상호 입출력

-t : tty(터미널) 사용

-it : i, t 옵션 동시 사용

-d : detached mode(백그라운드 실행)

-e : 컨테이너 내에서 사용할 환경 변수 설정

-name : 컨테이너 이름 설정

-rm : 프로세스 종료 시 컨테이너 자동 제거

-p : host와 컨테이너의 포트포워딩 설정

 

* 커맨드

bin/bash : 컨테이너에 bash 쉘 명령어 설정

 

(ex)

1
docker run ----name example -80:80 ubuntu:latest bin/bash

4) docker start (컨테이너 id 또는 컨테이너 이름)

컨테이너 실행 명령어

(ex)

1
docker start example

5) docker restart (컨테이너 id 또는 컨테이너 이름)

컨테이너 재실행 명령어

(ex)

1
docker restart example

6) docker attach (컨테이너 id 또는 컨테이너 이름)

컨테이너 접속 명령어(접속할 컨테이너가 실행이 되어있어야 합니다).

(ex)

1
docker attach example

 

* 컨테이너 안에서 빠져나오는 명령어

(1) exit, Ctrl + d(c) : 컨테이너를 정지하고 빠져나옵니다.

(2) Ctrl + p + q : 컨테이너를 정지하지 않고 빠져나옵니다.


7) docker stop (컨테이너 id 또는 컨테이너 이름)

컨테이너 정지 명령어

(ex)

1
docker stop example

8) docker rm (컨테이너 id 또는 컨테이너 이름)

컨테이너 삭제 명령어

(ex)

1
docker rm example

9) docker ps (옵션)

컨테이너 조회 명령어 (기본 명령은 실행 중인 컨테이너만 조회됩니다.)

 

* 옵션

-a : 중지된 컨테이너까지 조회

--filter : key=vaule 형식으로 컨테이너 정보 필터링

(필터는 id, name, label, exited, status, ancestor 등등이 있습니다.)

--format : 조회 출력 형식을 Go 템플릿을 사용해 변경

(Go 템플릿은 "table {{.ID}}\t{{.Labels}}" 같은 형식으로 작성합니다.)

-l : 가장 최근에 생성한 컨테이너 조회 (중지된 컨테이너 포함)

-q : 컨테이너 ID만 조회

-s : 컨테이너의 파일 사이즈 추가 조회

 

(ex)

1
docker ps ----filter name=example

10) docker rename (기존 컨테이너 이름) (변경할 컨테이너 이름)

컨테이너 이름 변경 명령어

(ex)

1
docker rename example ex
Posted by 블로그하는프로그래머
,

putty 를 이용해서 구입한 호스팅 서버에 접근 한다.

호스팅 주소는 신청당시 사용한 id.cafe24.com 으로 접속해서, 

id : root

pwd : 호스팅 신청 당시 설정한 root 비밀 번호 입력 합니다.

설치전 update 명령어로 ubuntu에 설치된 패키지 들의 정보를 update 합니다.

저 같은 경우 10분 정도 걸린거 같아요.

- update 명령어 : apt update & apt upgrade

curl 명령어를 사용해서 get-docker.sh 파일을 받는다.

현재 curl 명령어를 사용할 수 없다고 나오기에 curl 을 설치 해 주도록 한다.

- 도커 설치 파일 다운로드 명령어 : curl -fsSL https://get.docker.com -o get-docker.sh

Command 'curl' not found, but can be installed with:

apt install curl

현재 curl 명령어를 사용할 수 없다고 나오기에 curl 을 설치 해 주도록 한다.

- curl 설치 명령어 : apt install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-5.4.0-37 linux-headers-5.4.0-37-generic linux-image-5.4.0-37-generic linux-modules-5.4.0-37-generic linux-modules-extra-5.4.0-37-generic
Use 'apt autoremove' to remove them.
The following additional packages will be installed:
  libcurl4
The following packages will be REMOVED:
  libcurl3
The following NEW packages will be installed:
  curl libcurl4
0 upgraded, 2 newly installed, 1 to remove and 283 not upgraded.
Need to get 396 kB of archives.
After this operation, 479 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://kr.archive.ubuntu.com/ubuntu focal-updates/main amd64 libcurl4 amd64 7.68.0-1ubuntu2.15 [235 kB]
Get:2 http://kr.archive.ubuntu.com/ubuntu focal-updates/main amd64 curl amd64 7.68.0-1ubuntu2.15 [161 kB]
Fetched 396 kB in 3s (156 kB/s)
(Reading database ... 111939 files and directories currently installed.)
Removing libcurl3:amd64 (7.58.0-2ubuntu2) ...
Selecting previously unselected package libcurl4:amd64.
(Reading database ... 111932 files and directories currently installed.)
Preparing to unpack .../libcurl4_7.68.0-1ubuntu2.15_amd64.deb ...
Unpacking libcurl4:amd64 (7.68.0-1ubuntu2.15) ...
Selecting previously unselected package curl.
Preparing to unpack .../curl_7.68.0-1ubuntu2.15_amd64.deb ...
Unpacking curl (7.68.0-1ubuntu2.15) ...
Setting up libcurl4:amd64 (7.68.0-1ubuntu2.15) ...
Setting up curl (7.68.0-1ubuntu2.15) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9) ...

설치가 완료 되면 curl 을 이요해 설치 파일을 다운로드 한다.

- 도커 설치 파일 다운로드 명령어 : curl -fsSL https://get.docker.com -o get-docker.sh

설치 파일을 다운로드 했으면 실행 한다.

- 실행 명령어 : sudo sh get-docker.sh
# Executing docker install script, commit: 66474034547a96caa0a25be56051ff8b726a1b28
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings
+ sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
+ sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu focal stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-scan-plugin docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
 Version:           23.0.1
 API version:       1.42
 Go version:        go1.19.5
 Git commit:        a5ee5b1
 Built:             Thu Feb  9 19:46:56 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          23.0.1
  API version:      1.42 (minimum version 1.12)
  Go version:       go1.19.5
  Git commit:       bc3805a
  Built:            Thu Feb  9 19:46:56 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.16
  GitCommit:        31aa4358a36870b21a992d3ad2bef29e1d693bec
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

설치가 완료 된다면 도커 버전을 확인해 본다.

- 도커 버전 확인 명령어 : docker --version
Docker version 23.0.1, build a5ee5b1

필수 패키지 들을 설치 합니다.

- 설치 명령어 : sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

GPG Key 인증

- 인증 명령어 : curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

명령어 사용시 OK 가 확인 되면 완료.

docker repository 등록 진행 한다.

아키텍처에 맞춰서 Docker repository 등록해 줍니다.

아키텍처 확인은 arch 를 입력 합니다.

제 서버의 아키텍처는 x86_64 로 확인을 했습니다.

아래 명령어 실행 :

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

실행 결과 :

apt docker 설치

명령어 : sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

실행 결과 : 

설치 정상 확인 명령어 : docker -v 

시스템 재 부팅시 실행 되도록 설정 합니다.

설정 명령어 : sudo systemctl enable docker && service docker start

도커 서비스 상태 확인 : service docker status

active 까지 나오는걸 확인 했으면 docker 서비스 구축이 완료 되었습니다.

 

portainer 구축하기

portainer는 docker의 이미지,컨테이너,네트워크등을 쉽게 관리할 수 있게 도와주는 GUI Web 서비스 입니다.

docker의 이미지라는 개념이 생소할 수도있는데 윈도우 설치에 필요한 iso라고 보시면 될거같습니다.
iso로 윈도우를 설치하듯이 이미지로 docker의 컨테이너를 생성하게됩니다. 이 이미지(iso 같은)는 hub.docker.com에서 검색해보면 엄청나게 방대한양의 데이터베이스가 있습니다.

이번에 설치할 portainer도 찾아본다면 아래처럼 나오게 됩니다. 이외에 cent os, nginx, mariadb 등등 docker의 이미지는 엄청많으니 궁금하면 들어가서 찾아보시면 됩니다.

항상 지원하는 아키텍쳐를 확인하는게 좋습니다.

portainer 컨테이너 설치에 앞서 컨테이너와 host(vm)간에 볼륨매칭을 위한 디렉터리 생성부터 진행 합니다.

- 생성 명령어 : mkdir -p /data/portainer

- portainer 실행 명령어 : docker run --name portainer -p 9000:9000 -d --restart always -v /data/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

–-name 으로 컨테이너 이름 생성, -p 호스트 포트 9000 내부포트 9000번 , -d 데몬으로 백그라운드, –restart always 재부팅시 자동시작, -v /data~~ 호스트와 컨테이너간 볼륨매칭, docker.sock도 마찬가지로 공유, portainer/portainer 이미지 사용

실행이 완료 되면 url로 접속을 해 봅니다.

ip:9000 으로 접속 해 봅니다.

처음 관리자 아이디, 패스워드를 설정 합니다.

생성 완료 후 페이지

"Get Started" 클릭을 하게 되면 아래와 같이 local 도커가 연결된 것을 확인 할 수 있습니다.

서비스를 올려 보도록 하겠습니다.

제 목적은 docker 를 통해 spring boot 서버와 react 서버를 올리는 것이기에 2개의 서비스를 필요로 합니다.

왼쪽 메뉴중 Containers 를 클릭시 현재 실행되고 있는 컨테이너를 확인 할 수 있습니다.

오르쪽 상단위 Add container를 통해 신규 컨테이너를 GUI로 만들 수 있습니다.

또는 이미지 추가로 도커의 허브에 있는 공개되어 있는 이미지 들을 추가 해서 사용 할 수 있습니다.

2편 도커에 gradle, git, open jdk17, nodejs, react 추가 하기

 

참고 : 도커 기본 명령어 모음

참고 사이트 : 서버포럼 - Docker Web GUI 관리 툴 Portainer 설치하기.(+ 도커 설치하기) (svrforum.com)

Posted by 블로그하는프로그래머
,