2021. 7. 14. 02:09ใSystem ์์ ์ค/LINUX
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค.
์ค๋์ Ubuntu 20.04์ Docker๋ฅผ ์ค์น ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค!
โ ๋ชฉ์ฐจ
VMWare๋ฅผ ํตํ Ubuntu 20.04 LTS ์ค์น
Portainer๋ฅผ ์ด์ฉํ nginx ์ค์น
[docker] Portainer๋ฅผ ์ด์ฉํ tomcat ์ค์น
๐ Docker๋?
๐ Docker๋ฅผ ์ฌ์ฉํ๋ ์ด์
Docker๋ ์ด๋ ํ ํ๋ก๊ทธ๋จ์ ๋ค์ด ๋ฐ๋ ๊ณผ์ ์ ๊ต์ฅํ ๊ฐ๋จํ๊ฒ ๋ง๋ค๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ด์์.
์ฐ๋ฆฌ๊ฐ ์ด๋ค ํ๋ก๊ทธ๋จ์ PC์ ์ค์นํ๋ ค๋ฉด ์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ ๊ฒ์ด์์.
ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ฌ๋ฌ ์ํฉ๊ณผ ํ๊ฒฝ์ผ๋ก ์ธํด ์๋ ์ฒ๋ผ Error๋ฅผ ๋ง๋๊ฒ ๋ ์๋ ์๋ต๋๋ค.
Error๊ฐ ๋ฐ์ํ๋ ์ด์ ๋ ์ฐ๋ฆฌ์ PC, Package Version, Operation System ๋ฑ๋ฑ์ ๋ฐ๋ผ ํด๋น ํ๋ก๊ทธ๋จ์ ์ค์นํ๋ ๊ณผ์ ์์ ๋ง์ Error๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด์์. ๋ํ, ์์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค๋ ๊ฒ์ ์ค์น ๊ณผ์ ์ด ๋ณต์กํ๋ค๋ ๋จ์ ์ด ์๋ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด Docker๋ก ํ๋ก๊ทธ๋จ์ ์ค์นํ๊ฒ ๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
์ฌ๊ธฐ 'Redis'๋ผ๋ ํ๋ก๊ทธ๋จ์ Docker์์ ์ค์นํ ๋, ์์๋ฅผ ๋ณด์ฌ ๋๋ฆฌ๋๋ก ํ ๊ฒ์!
์์ ๊ฐ์ด ์์ฒญ๋๊ฒ ๊ฐ๋จํ ๊ณผ์ ์ ํตํด ๋ด๊ฐ ์ํ๋ ํ๋ก๊ทธ๋จ์ ์ค์นํ ์ ์๋ ๊ฒ์ด์์!
๐ Docker์ ๊ฐ๋
Docker์์๋ 'Container' ๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํ์ฌ Application์ ๋ ์ฝ๊ฒ ๋ง๋ค๊ณ , ๋ฐฐํฌํ๊ณ , ์คํํ ์ ์๋๋ก ์ค๊ณ๋ ๋๊ตฌ์ด๋ฉฐ, 'Container' ๊ธฐ๋ฐ ์คํ์์ค ๊ฐ์ํ ํ๋ซํผ์ด๋ฉฐ, ์ํ๊ณ ์ ๋๋ค.
์ฌ๋ฌ๋ถ๋ค Container๊ฐ ๋ฌด์์ธ๊ฐ์? ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์๋ Conatiner๋ผ๋ ๊ฒ์ ์๋์ ๊ฐ์ด
๋๋์ ๋ฌผ๊ฑด์ ์ด๋ฐํ๊ธฐ ์ํ์ฌ ๋ฌผ๊ฑด์ ๋ด๋ ํ๋์ ํฐ ๋ฐ๊ตฌ๋๋ผ๊ณ ์๊ณ ์์ ๊ฒ์ด์์.
Docker์ Container๋ ์ด์ ์ ์ฌํ ๊ฐ๋ ์ผ๋ก ์ถ๋ฐํ๋ต๋๋ค!
Docker์ Container๋ ํ๋์ Virtual Server ํน์ Virtual Machine์ด๋ฉฐ, ๊ทธ Server์์ ์ฐ๋ฆฌ๊ฐ ํ์ํ Application์ ์ค์นํ๊ณ , ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฒ์ด์์.
์ฆ, Container์์ ๋ค์ํ Application, ์คํํ๊ฒฝ์ ์ถ์ํํ์ฌ ๋์ผํ Interface๋ฅผ ์ ๊ณตํ์ฌ Application ๋ฐฐํฌ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋จ์ํ๊ฒ ํด ์ฃผ๋ ๊ฒ์ด์์. ์ผ๋ฐ Container ๊ฐ๋ ์์ ๋ชฐ๊ฑด์ ์์ฝ๊ฒ ์ด์กํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ๊ตฌ๋์ธ ๊ฒ์ฒ๋ผ ํ๋ก๊ทธ๋จ์ ์์ฝ๊ฒ ์ด๋ ๋ฐ ๋ฐฐํฌ, ๊ด๋ฆฌ ํ ์ ์๊ฒ ํด์ค๋ต๋๋ค!
๋ํ, Docker๋ AWS, Azure, Google Cloud๋ ๋์ Virtual Machine, ๋์ PC ๋ฑ ์ด๋์์๋ ์คํ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ๋ ๊ฒ์ด์์!
๐ Docker Image์ Container์ ์ ์
Continer๋ ์ฝ๋์ ๋ชจ๋ ์ข ์์ฑ์ Packageํํ์ฌ Application์ด ํ Computing ํ๊ฒฝ์์ ๋ค๋ฅธ Computing ํ๊ฒฝ์ผ๋ก ๋น ๋ฅด๊ณ , ์์ ์ ์ผ๋ก ์คํ๋๋๋ก ํ๋ Software์ ํ์ค ๋จ์ ์ธ ๊ฒ์ด์์.
ํ์ฌ๊น์ง ์ฌ๋ฌ๊ฐ์ง ๋ฐฉํฅ์ผ๋ก Container๋ฅผ ์ ์ํ ๋, ๊ฐ๋จํ๊ฒ ๋ํ ํธ๋ฆฌํ๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ์คํ ์์ผ์ค๋ค๋ ๋๋์ผ๋ก ์ ์๋ฅผ ๋ด๋ฆฌ๋ ๊ฒ์ด์์.
Docker Image๋ Code, Runtime, System ๋๊ตฌ, System library ๋ฐ ์ค์ ๊ณผ ๊ฐ์ Application์ ์คํํ๋๋ฐ, ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ๊ฐ๋ณ๊ณ , ๋ ๋ฆฝ์ ์ด๋ฉฐ, ์คํ ๊ฐ๋ฅํ Software Package ์ธ ๊ฒ์ด์์.
๋ํ, Docker Image๋ Runtime์ Container๊ฐ ๋๊ณ , Docker Container์ ๊ฒฝ์ฐ Docker Engin์์ ์คํ๋ ๋, Image๊ฐ Container๊ฐ ๋๋ ๊ฒ์ด์์.
Linux์ Windows ๊ธฐ๋ฐ Application ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋ Containerํ๋ Software๋ Infra์ ์๊ด์์ด ํญ์ ๋์ผํ๊ฒ ์คํ๋ ์ ์๋ ๊ฒ์ด์์!
Container๋ Software๋ฅผ ํ๊ฒฝ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ์ํค๊ณ , ๊ฐ๋ฐ๊ณผ Staging์ ์ฐจ์ด์๋ ๋ถ๊ตฌํ๊ณ , ๊ท ์ผํ๊ฒ ์๋ํ๋๋ก ๋ณด์ฅํด ์ค๋ต๋๋ค!
Docker Image๋ Application์ ์คํํ๋๋ฐ, ํ์ํ ์ค์ ์ด๋, ์ข ์์ฑ์ ๊ฐ๊ณ ์์ผ๋ฉฐ, Docker Image๋ฅผ ์ด์ฉํด์ Container๋ฅผ ์์ฑํ๋ฉฐ, Docker Container๋ฅผ ์ด์ฉํ์ฌ Application์ ์คํํ๋ค! ๋ก ์ ๋ฆฌํ ์ ์๊ฒ ์ต๋๋ค!
๐ ์ Docker ์ ์๋ Inflern์ '๋ฐ๋ผํ๋ฉฐ ๋ฐฐ์ฐ๋ ๋์ปค์ CIํ๊ฒฝ' ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ, ์ ๋ฆฌํ ๋ด์ฉ์ด๋ฉฐ, ๊ด๋ จ์๋ฃ๋ ๋ชจ๋ ํด๋น ๊ฐ์์์ ๊ฐ์ ธ์์์ ์๋ ค ๋๋ฆฝ๋๋ค.
๐ Docker ์ค์น
๐ apt ์ต์ ํ
junyharang@junyharang-virtual-machine:~$ sudo apt-get update
junyharang@junyharang-virtual-machine:~$ sudo apt-get upgrade
๋จผ์ ์์ ๊ฐ์ด apt๋ฅผ Updateํ์ฌ Docker ์ค์น๋ฅผ ์ค๋นํด์ผ ํ๋ ๊ฒ์ด์์!
๐ ํ์ Package ์ค์น
junyharang@junyharang-virtual-machine:~$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
๐ GPG Key ์ธ์ฆ
junyharang@junyharang-virtual-machine:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
์์ ๊ฐ์ด [ OK ]๊ฐ ๋จ๋ฉด ์ ์์ ์ผ๋ก ๋ ๊ฒ์ด์์!
๐ Architecture ํ์ธ
junyharang@junyharang-virtual-machine:~$ arch
Architecture์ ๋ง์ถฐ Docker Repository๋ฅผ ๋ฑ๋ก ํด ์ค ๊ฒ์ด์์.
์ฌ๋ฌ๋ถ์ PC(Ubuntu)์ Architecture๋ฅผ ํ์ธํ๊ณ ์ถ์ผ์๋ค๋ฉด ์์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์๋ฉด ํ์ธ ๊ฐ๋ฅ ํ๋ต๋๋ค!
๐ Docker Repository ๋ฑ๋ก
junyharang@junyharang-virtual-machine:~$ sudo add-apt-repository \
> "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
> $(lsb_release -cs) \
> stable"
์์ ๊ฐ์ด ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅ ํ์ ๋, [ ํจํค์ง ๋ชฉ๋ก์ ์ฝ๋ ์ค์ ๋๋ค... ์๋ฃ (์์ด ๋ฒ์ ์ ๊ฒฝ์ฐ Reading Package lists... Done) ] ์ด๋ผ๊ณ ๋์ฌ ๊ฒฝ์ฐ ์ ์ ์ค์น๊ฐ ๋ ๊ฒ ์ด์์!
๐ APT๋ฅผ ์ด์ฉํ์ฌ Docker ์ค์น
junyharang@junyharang-virtual-machine:~$ sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
์์ ๊ฐ์ด apt ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ์ฌ Docker๋ฅผ ์ค์น ํด ์ฃผ์๋ฉด ๋ฉ๋๋ค!
junyharang@junyharang-virtual-machine:~$ docker -v
์ค์น๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๊ฐ ๋์๋์ง ์์ ๋ช ๋ น์ด๋ก ํ์ธ ํ ์ ์๋ ๊ฒ์ด์์!
๐ Docker ๊ตฌ๋
unyharang@junyharang-virtual-machine:~$ sudo systemctl enable docker && service docker start
์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ Docker๋ฅผ ๊ตฌ๋ ์์ผ ์ฃผ์๋ฉด ๊ตฌ๋์ด ๋ฉ๋๋ค!
๐ Docker ๊ตฌ๋ ์ฌ๋ถ ํ์ธ
junyharang@junyharang-virtual-machine:~$ service docker status
Active๋์ active(running)์ด๋ผ๊ณ ๋์ค๋ฉด ์ ์์ ์ผ๋ก ๊ตฌ๋ ๋๊ณ ์๋ ๊ฒ์ ๋๋ค!
์ฐธ๊ณ ๋ก ์ ์ํ์์ 'q'๋ฅผ ๋๋ฌ์ผ ๋๊ฐ ์ ์์ต๋๋ค!
๐ Portainer ๊ตฌ์ถ
portainer๋ Docker์ Image, Container, Network ๋ฑ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๋๋ก ๋์์ฃผ๋ Graphic User Interface Web Service ์ธ ๊ฒ์ด์์.
์ฌ๊ธฐ์ Image๋? ์ฐ๋ฆฌ๊ฐ VM Ware์์ Ubuntu๋ฅผ ์ค์นํ๊ธฐ ์ํด์ ๋ฐ์ File์ ํ์ฅ์๊ฐ .iso์ธ๋ฐ, ์ด๊ฒ์ ๊ฐ์ CD๋ผ๊ณ ๋ณด์๋ฉด ๋๊ณ , ์ด๊ฒ๊ณผ ์ ์ฌํ Docker์์ ์ฌ์ฉ๋๋ OS ์ค์น์ฉ iso๋ผ๊ณ ์ดํดํ์๋ฉด ๋๋ ๊ฒ์ด์์.
Docker์ Image๋ hub.docker.com์์ ๋์ฑ ๋ง์ ์๋ฃ๋ฅผ ์ฐพ์ ๋ณผ ์ ์์ผ๋ ํ์ํ์๋ค๋ฉด ํ๋ฒ ํ์ธ ํด ๋ณด์๋๊ฑธ ์ถ์ฒ ๋๋ฆฌ๋ ๊ฒ์ด์์.
Potainer๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ ์ ์์์ ์ค๋ช ๋๋ฆฐ ์์ ์ PC์ ๋ง๋ Architecture๋ฅผ ํ์ธํ๊ณ , ๊ทธ๊ฒ์ ๋ง๋ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค!
๋จผ์ Protainer Container๋ฅผ ์ค์นํ๊ธฐ ์ ์ Container์ Host(Ubuntu OS)๊ฐ์ Volume Matcing์ ์ํ Directory ์์ฑ๋ถํฐ ํด ๋ณด๋๋ก ํ ๊ฒ์ด์์.
๋จผ์ [ $ df -h ]๋ผ๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์ฐ๋ฆฌ Ubuntu๊ฐ ํ์ฌ ๊ฐ์ง๊ณ ์๋ Directory๋ค์ ํ์ธ ํด ๋ณผ ์ ์๋ ๊ฒ์ด์์.
๋ค์ -h Option์ ์ฉ๋์ ๋ํด ์ฌ์ฉ๋ ๋ฑ์ Giga Byte ๋จ์๋ก ๋ณด๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค.
sudo ๋ช ๋ น์ด๋ฅผ ํตํด root ๊ถํ์ ํ๋ณดํ ๋ค mkdir๋ก Directory๋ฅผ ๋ง๋๋ ๊ฒ์ด์์.
- mkdir ๋ช ๋ น์ด Option ์ข ๋ฅ
์ต์ | Long ์ต์ | ์ค๋ช |
-m | --mode=MODE | ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑํ ๋ ๊ถํ์ ์ค์ , ๋ํดํธ๋ 755 |
-p | --parents | ์์ ๊ฒฝ๋ก๋ ํจ๊ป ์์ฑ |
-v | --verbose | ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑ ํ, ์์ฑ๋ ๋๋ ํ ๋ฆฌ์ ๋ํด ๋ฉ์์ง ์ถ๋ ฅ |
--help | mkdir์ ์ฌ์ฉ๋ฒ์ ์ถ๋ ฅ | |
--version | mkdir์ ๋ฒ์ ์ ๋ณด๋ฅผ ์ถ๋ ฅ |
์ฃผ๋ํ๋์ ๋ฃจํธ Directory [ / ] ๋ฐ์ docker๋ผ๋ Directory๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๋ฐ์ ๋ค์ portainer๋ผ๋ Directory๋ฅผ ๋ง๋ ๊ฒ์ด์์.
junyharang@junyharang-virtual-machine:~$ cd /
junyharang@junyharang-virtual-machine:/$ ls -al
ํฉ๊ณ 2097244
drwxr-xr-x 21 root root 4096 7์ 14 01:40 .
drwxr-xr-x 21 root root 4096 7์ 14 01:40 ..
lrwxrwxrwx 1 root root 7 7์ 13 20:45 bin -> usr/bin
drwxr-xr-x 4 root root 4096 7์ 13 20:56 boot
drwxrwxr-x 2 root root 4096 7์ 13 20:46 cdrom
drwxr-xr-x 19 root root 4120 7์ 13 20:57 dev
drwxr-xr-x 3 root root 4096 7์ 14 01:40 docker
drwxr-xr-x 132 root root 12288 7์ 13 21:21 etc
drwxr-xr-x 3 root root 4096 7์ 13 20:47 home
lrwxrwxrwx 1 root root 7 7์ 13 20:45 lib -> usr/lib
lrwxrwxrwx 1 root root 9 7์ 13 20:45 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 7์ 13 20:45 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 7์ 13 20:45 libx32 -> usr/libx32
drwx------ 2 root root 16384 7์ 13 20:45 lost+found
drwxr-xr-x 2 root root 4096 2์ 10 03:47 media
drwxr-xr-x 2 root root 4096 2์ 10 03:47 mnt
drwxr-xr-x 3 root root 4096 7์ 13 21:21 opt
dr-xr-xr-x 347 root root 0 7์ 13 20:57 proc
drwx------ 4 root root 4096 7์ 13 20:51 root
drwxr-xr-x 37 root root 1000 7์ 13 21:21 run
lrwxrwxrwx 1 root root 8 7์ 13 20:45 sbin -> usr/sbin
drwxr-xr-x 8 root root 4096 2์ 10 03:57 snap
drwxr-xr-x 2 root root 4096 2์ 10 03:47 srv
-rw------- 1 root root 2147483648 7์ 13 20:45 swapfile
dr-xr-xr-x 13 root root 0 7์ 13 20:57 sys
drwxrwxrwt 21 root root 4096 7์ 14 01:37 tmp
drwxr-xr-x 14 root root 4096 2์ 10 03:48 usr
drwxr-xr-x 14 root root 4096 2์ 10 03:56 var
cd (Change Directory)๋ฅผ ํตํด root Directory [ / ]๋ก ์ด๋์ ํ ๋ค ls (List) ๋ช ๋ น์ด๋ฅผ ํตํด Directory ๋ชฉ๋ก์ ์ถ๋ ฅํ๋
์ฃผ๋ํ๋์ด ๋ง๋ docker๋ผ๋ Directory๊ฐ ๋ณด์ด๋ ๊ฒ์ด์์.
์! ์ด์ potainer๋ฅผ ๊น์ ๋ณด๋ ๊ฒ์ด์์.
junyharang@junyharang-virtual-machine:/$ sudo docker run --name portainer -p 9000:9000 -d --restart always -v /docker/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer
์์ ๋ช ๋ น์ด์ ๋ด์ฉ์ ์งง๊ฒ ์ค๋ช ํ์๋ฉด
๐ --name : Container Name ์์ฑ
๐-p Host Port 9000๋ฒ๊ณผ ๋ด๋ถ Port 9000๋ฒ Mapping
๐ -d Deamon์ Background์์ ์คํ
๐ -restart always : ์ฌ ๋ถํ ์ ์๋ ๊ธฐ๋
๐/docker/potainer:/data -v : Host์ Container ๊ฐ์ Volume Matcing
๐.docker.sock : Host์ Container ๊ฐ์ ๊ณต์ ๋ฅผ ์ํ ๋ช ๋ น์ด
๐portainer/portainer : Image ์ฌ์ฉ ์์ ์ง์
๐ ์ปจํ ์ด๋ ๋ชฉ๋ก: docker ps
๐ ์ปจํ ์ด๋ ์คํ: docker exec -it [Container ID]
๐ Portainer ์คํ
์ฃผ๋ํ๋์ Windows10 (VM Ware๋ฅผ ๊ธฐ๋์ํจ HostPC)์์ ์จ์ผ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๊ฐ์ ๋จธ์ OS์ธ Ubuntu์ IP (ifconfig ๋ช ๋ น์ผ๋ก ํ์ธ)๋ฅผ ์ ๋ ฅํ ๋ค :9000๋ฒ์ ์ ๋ ฅ ํด ์ฃผ๋ฉด ์ด๋ ๊ฒ ์ ์ ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ ๊ฒ์ด์์.
์ต์ด ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ง๋ ๋ค [ Create user ]๋ฅผ ๋๋ฌ ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
Username์ด๋, ๋น๋ฐ๋ฒํธ๋ ์ฌ๋ฌ๋ถ ๋ง์๋๋ก ์ ํ์ ๋ ์๊ด ์์ต๋๋ค!
[ Local ] ์ ์ ํํ๊ณ , [ Connetc ]๋ฅผ ๋๋ฌ์ฃผ๋ฉด?
์ง์! Portainer ์ค์น ๋ฐ ๊ตฌ๋์ด ์๋ฃ ๋์์ต๋๋ค!
์ฃผ๋ํ๋์ ๊ธ์ด ๋ง์์ ๋์ จ๋์? ๊ตฌ๋ ๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋๊ธ์ ์ฃผ๋ํ๋์๊ฒ ๋ง์ ํ์ด ๋ฉ๋๋ค!
'System ์์ ์ค > LINUX' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Linux]Kernel System Call (0) | 2021.08.17 |
---|---|
[Linux] ๋ช ๋ น์ด ์ฌ์ (0) | 2021.08.17 |
[Ubuntu 20.04] JDK 14์ IDE ์ค์น (0) | 2021.02.21 |
[Ubuntu 20.04] Vmware์ Ubuntu ์ค์น (0) | 2021.02.20 |
[Ubuntu 20.04] Tomcat8 ์ค์น (0) | 2021.01.22 |