ํฌ๊ด์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ด ํฌํจ๋ ๋ฉํฐ ์ํคํ ์ฒ Ubuntu Docker ์ด๋ฏธ์ง์ ๋๋ค.
์ด ์ ์ฅ์๋ ๊ฐ๋ฐ์ ์ต์ ํ๋ ํ๋ก๋์ ์ค๋น Ubuntu Docker ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํ๋ฉฐ, ๋ค์ ๊ธฐ๋ฅ์ ํฌํจํฉ๋๋ค:
- ๋ฉํฐ ์ํคํ ์ฒ ์ง์: amd64, arm/v7, arm64/v8, ppc64le, riscv64, s390x
- ๋ค์ํ Ubuntu ๋ฒ์ : 12.04๋ถํฐ 24.04 LTS๊น์ง
- ์์ ํ ๊ฐ๋ฐ ํด์ฒด์ธ: gcc, clang, cmake, Python ๋ฑ
- GUI ๋ฐ์คํฌํฑ ํ๊ฒฝ: XRDP๋ฅผ ํตํ ์๊ฒฉ ์ ์ ์ง์ XFCE4
- ํ๊ตญ์ด ์ง์: ํฐํธ ๋ฐ ์ ๋ ฅ๊ธฐ ํฌํจ
- ํนํ ๋ณํ: ์น ์๋ฒ, VPN, ๋ ๊ฑฐ์ SDK ์ง์
# ์ต์ Ubuntu ๊ฐ๋ฐ ํ๊ฒฝ
docker pull hwport/ubuntu:latest
docker run -d -p 2222:22 -p 3389:3389 hwport/ubuntu:latest
# ๋ฐ์คํฌํฑ์ด ํฌํจ๋ Ubuntu 24.04
docker pull hwport/ubuntu:24.04
docker run -d -p 2222:22 -p 3389:3389 \
-e XRDP_DESKTOP=yes \
hwport/ubuntu:24.04
# Apache ์น ์๋ฒ
docker pull hwport/ubuntu:www-latest
docker run -d -p 80:80 -p 443:443 hwport/ubuntu:www-latest์ปจํ
์ด๋ ์ต์ด ๊ตฌ๋ ์ INIT_USER ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค:
docker run -d -p 2222:22 -p 3389:3389 \
-e INIT_USER=dev \
-e INIT_USER_PASSWORD=password \
-e XRDP_DESKTOP=yes \
hwport/ubuntu:24.04์ด๋ฏธ ํด๋น ์ฌ์ฉ์๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ ์ค๋ณต ์์ฑํ์ง ์์ผ๋ฏ๋ก ์ปจํ ์ด๋ ์ฌ์์ ์์๋ ์์ ํฉ๋๋ค.
์ปจํ ์ด๋ ์์ ํ ์ง์ ์ฌ์ฉ์๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค:
# ์ฌ์ฉ์ ์์ฑ
docker exec -i -t <container-name> \
useradd -c "Developer" -d "/home/dev" \
-g "users" -G "users,adm,sudo,audio,input" \
-s "/bin/bash" -m dev
# ๋น๋ฐ๋ฒํธ ์ค์
docker exec -i -t <container-name> \
sh -c "echo \"dev:password\" | chpasswd"- SSH:
ssh -p 2222 dev@localhost - XRDP: ๋ชจ๋ RDP ํด๋ผ์ด์ธํธ๋ก
localhost:3389์ ์ฐ๊ฒฐ - ์น ํฐ๋ฏธ๋:
http://localhost:4200๋ก ์ด๋ (SHELLINABOX=yes์ธ ๊ฒฝ์ฐ)
| ํ๊ทธ | ์ค๋ช | ์ํคํ ์ฒ |
|---|---|---|
latest |
์ต์ Ubuntu LTS | Multi-arch |
24.04 |
Ubuntu 24.04 Noble | Multi-arch |
22.04 |
Ubuntu 22.04 Jammy | Multi-arch |
20.04 |
Ubuntu 20.04 Focal | Multi-arch |
18.04 |
Ubuntu 18.04 Bionic | Multi-arch |
16.04 |
Ubuntu 16.04 Xenial | Multi-arch |
14.04 |
Ubuntu 14.04 Trusty | Multi-arch |
12.04 |
Ubuntu 12.04 Precise | Multi-arch |
| ํ๊ทธ | ์ค๋ช |
|---|---|
www-latest |
Apache + PHP-FPM (์ต์ ) |
www-24.04 |
Apache + PHP-FPM (24.04) |
www-22.04 |
Apache + PHP-FPM (22.04) |
www-20.04 |
Apache + PHP-FPM (20.04) |
| ํ๊ทธ | ์ค๋ช |
|---|---|
strongswan |
IPsec VPN ์๋ฒ (strongSwan) |
cron |
Cron ์๋น์ค ์ปจํ ์ด๋ |
xrdp |
์๊ฒฉ ๋ฐ์คํฌํฑ ์๋ฒ |
- ์ปดํ์ผ๋ฌ: gcc, g++, clang/LLVM
- ๋น๋ ์์คํ : make, cmake, meson, ninja, autotools
- ๋ฒ์ ๊ด๋ฆฌ: git, svn, cvs
- ๋๋ฒ๊ฑฐ: gdb, strace
- ๋น๋ ๊ฐ์: ccache, distcc
- ํจํค์ง ๊ด๋ฆฌ์: apt, pip
- Linux ์ปค๋ ํค๋
- ๋๋ฐ์ด์ค ํธ๋ฆฌ ์ปดํ์ผ๋ฌ
- U-Boot ๋๊ตฌ
- ํฌ๋ก์ค ์ปดํ์ผ ์ง์
- Verilog ๋๊ตฌ (iverilog, gtkwave)
- WM: ํ๋ฌ๊ทธ์ธ์ด ํฌํจ๋ XFCE4
- ์๊ฒฉ ์ ์: XRDP, SSH, Shellinabox
- ์ ํ๋ฆฌ์ผ์ด์ : Firefox, LibreOffice, GIMP, VLC
- EDA: KiCad, LibreCAD
- ํ๊ตญ์ด ์ง์: ๋๋ ํฐํธ, ibus-hangul
- amd64: NVIDIA CUDA ํดํท, Android Studio
- amd64/arm64: KiCad, LibreOffice, Firefox
- ๋ชจ๋ ํ๋ซํผ: ํ์ค ๊ฐ๋ฐ ๋๊ตฌ
ํ๊ฒฝ ๋ณ์๋ก ์ปจํ ์ด๋ ๋์ ๊ตฌ์ฑ:
docker run -d \
-e TZ=Asia/Seoul \
-e LANG=ko_KR.UTF-8 \
-e INIT_USER=dev \
-e INIT_USER_PASSWORD=password \
-e XRDP_DESKTOP=yes \
-e SHELLINABOX=yes \
-e CLAMAV=yes \
hwport/ubuntu:24.04| ํ๊ฒฝ ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
TZ |
- | ์๊ฐ๋ ์ค์ . ์ปจํ
์ด๋ ์์ ์ /etc/localtime ๋ฐ /etc/timezone์ ๋ฐ์๋ฉ๋๋ค. (์: Asia/Seoul, US/Eastern, Europe/London) |
LANG |
en_US.UTF-8 |
์์คํ ์ธ์ด |
TERM |
xterm |
ํฐ๋ฏธ๋ ํ์ |
LC_ALL |
C |
๋ก์ผ์ผ ์ ๋ ฌ |
EDITOR |
vim |
๊ธฐ๋ณธ ์๋ํฐ |
| ํ๊ฒฝ ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
INIT_USER |
- | ์์ฑํ ์ฌ์ฉ์๋ช . ์ค์ ํ์ง ์์ผ๋ฉด ์ฌ์ฉ์๋ฅผ ์๋ ์์ฑํ์ง ์์ต๋๋ค. |
INIT_USER_PASSWORD |
- | ์ฌ์ฉ์ ํจ์ค์๋. ์ค์ ํ์ง ์์ผ๋ฉด ํจ์ค์๋ ์์ด ์์ฑ๋ฉ๋๋ค. |
INIT_USER_COMMENT |
Developer |
์ฌ์ฉ์ ์ค๋ช (GECOS ํ๋) |
INIT_USER_GROUP |
users |
๊ธฐ๋ณธ ๊ทธ๋ฃน |
INIT_USER_GROUPS |
users,adm,sudo,audio,input |
๋ณด์กฐ ๊ทธ๋ฃน (sudo ํฌํจ) |
INIT_USER_SHELL |
/bin/bash |
๊ธฐ๋ณธ ์ ธ |
์ปจํ ์ด๋ ์ต์ด ๊ตฌ๋ ์ ํด๋น ์ฌ์ฉ์๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ง ์์ฑํฉ๋๋ค. ์ปจํ ์ด๋๋ฅผ ์ฌ์์ํด๋ ๊ธฐ์กด ์ฌ์ฉ์๋ ์ ์ง๋ฉ๋๋ค.
| ํ๊ฒฝ ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
|---|---|---|
XRDP_DESKTOP |
- | yes๋ก ์ค์ ์ XRDP ์๊ฒฉ ๋ฐ์คํฌํฑ ์๋น์ค ์์ |
SHELLINABOX |
- | yes๋ก ์ค์ ์ ์น ๊ธฐ๋ฐ ํฐ๋ฏธ๋ (Shell In A Box) ์์ |
CLAMAV |
- | yes๋ก ์ค์ ์ ClamAV ์ํฐ๋ฐ์ด๋ฌ์ค ์
๋ฐ์ดํธ ์์ |
22/tcp: SSH ์๋ฒ3389/tcp: XRDP ์๊ฒฉ ๋ฐ์คํฌํฑ4200/tcp: Shellinabox ์น ํฐ๋ฏธ๋
80/tcp: HTTP443/tcp: HTTPS
500/udp: IKE4500/udp: NAT-T
# Docker Buildx ์ค์น
cd scripts
./__buildx_install.sh# ์ด๋ฏธ์ง ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd 24.04
# ๋น๋ ๋ฐ ๋ ์ง์คํธ๋ฆฌ์ ํธ์
./__buildx.sh
# ๋๋ ๋ก์ปฌ ์ฌ์ฉ ์ ์ฉ ๋น๋
docker buildx build --platform linux/amd64 -t ubuntu:24.04-local .# ํ
์คํธ ์ปจํ
์ด๋ ์์
./__up.sh
# ๋ก๊ทธ ๋ณด๊ธฐ
docker logs mzdev-test
# ์ปจํ
์ด๋ ์ค์ง
./__down.shGUI ๋๊ตฌ๊ฐ ํฌํจ๋ ์์ ํ ๊ฐ๋ฐ ํ๊ฒฝ, ๋ค์์ ์ ํฉ:
- ํฌ๋ก์ค ํ๋ซํผ ๊ฐ๋ฐ
- ์๋ฒ ๋๋ ์์คํ ํ๋ก๊ทธ๋๋ฐ
- ์ปค๋ ๋ชจ๋ ๊ฐ๋ฐ
- CI/CD ๋น๋ ํ๊ฒฝ
PHP-FPM์ด ํฌํจ๋ Apache ์น ์๋ฒ ์ด๋ฏธ์ง, ๋ค์์ ์ ํฉ:
- PHP ์ ํ๋ฆฌ์ผ์ด์ ํธ์คํ
- ๊ฐ๋ฐ/์คํ ์ด์ง ํ๊ฒฝ
- SSL/TLS๊ฐ ํ์ฑํ๋ ์น์ฌ์ดํธ
XRDP๊ฐ ํ์ฑํ๋ ๋ฐ์คํฌํฑ, ๋ค์์ ์ ํฉ:
- ์๊ฒฉ ๊ฐ๋ฐ
- GUI ์ก์ธ์ค๊ฐ ๊ฐ๋ฅํ ํค๋๋ฆฌ์ค ์๋ฒ
- ๊ฐ์ ์ํฌ์คํ ์ด์
StrongSwan IPsec ์๋ฒ, ๋ค์์ ์ ํฉ:
- ์ฌ์ดํธ ๊ฐ VPN
- ์๊ฒฉ ์ก์ธ์ค VPN
- ๋ณด์ ํฐ๋๋ง
version: "2.1"
services:
dev:
image: hwport/ubuntu:24.04
container_name: my-dev-env
hostname: devbox
stdin_open: true
tty: true
privileged: true
environment:
- container=docker
- TZ=Asia/Seoul
- TERM=xterm
- LC_ALL=C
- LANG=ko_KR.UTF-8
- EDITOR=vim
- INIT_USER=dev
- INIT_USER_PASSWORD=password
# - INIT_USER_COMMENT=Developer
# - INIT_USER_GROUP=users
# - INIT_USER_GROUPS=users,adm,sudo,audio,input
# - INIT_USER_SHELL=/bin/bash
- XRDP_DESKTOP=yes
- SHELLINABOX=yes
ports:
- "2222:22"
- "3389:3389"
- "4200:4200"
restart: unless-stopped- ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฆ์ ๋ณ๊ฒฝํ์ธ์
- ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ ๋์ SSH ํค๋ฅผ ์ฌ์ฉํ์ธ์
- ์ต์ ๋ณด์ ํจ์น๋ก ์ด๋ฏธ์ง๋ฅผ ์ ๋ฐ์ดํธํ์ธ์
- ์ต์ ํ์ ๊ถํ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์คํํ์ธ์
- ํ์ํ ํฌํธ๋ง ํธ์คํธ์ ๋ฐ์ธ๋ฉํ์ธ์
Copyright (C) 2024 HWPORT.COM All rights reserved.
์กฐ์ฌํ (JaeHyuk Cho) ์ด๋ฉ์ผ: minzkn@minzkn.com ์น: https://www.minzkn.com/
์ด์ ๋ฐ ํ ๋ฆฌํ์คํธ๋ฅผ ํ์ํฉ๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ์ฌํญ์ ๊ฒฝ์ฐ, ๋จผ์ ์ด์๋ฅผ ์ด์ด ์ ์ ์ฌํญ์ ๋ ผ์ํด ์ฃผ์ธ์.
์ด์, ์ง๋ฌธ ๋๋ ์ ์ ์ฌํญ:
- ์ ์ฅ์์ ์ด์ ์ด๊ธฐ
- ๊ด๋ฆฌ์์๊ฒ ์ง์ ์ฐ๋ฝ
์ฐธ๊ณ : ์ด ์ด๋ฏธ์ง๋ค์ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ํ๋ก๋์ ๋ฐฐํฌ์ ๊ฒฝ์ฐ, ๋ณด์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๊ตฌ์ฑ์ ๊ฒํ ํ๊ณ ๋ง์ถค ์ค์ ํ์ธ์.