1.1. 개요
본 프로젝트는 Ubuntu 기반에서의 기초 개발환경을 제공하는 Docker image 를 목표로 합니다.
- Docker hub 홈페이지 : https://hub.docker.com/r/hwport/ubuntu/
- source repository : https://github.com/minzkn/ubuntu/
# git clone https://github.com/minzkn/ubuntu.git hwport-ubuntu # cd hwport-ubuntu # git checkout <tag 또는 branch 이름> # ./build-docker-image.sh
- Ubuntu 12.04, 14.04, 16.04, 18.04, 20.04, ... LTS 기반 (FROM ubuntu:<tag 이름>)
- 기본적으로는 upstart / systemd 또는 sshd 환경으로 실행됩니다.
- Synology NAS 의 Docker 기능을 통한 실행화면
[JPG image (37.98 KB)]
1.2. image 설치방법
- Docker hub pull name : "hwport/ubuntu:<tag 이름>"
# docker pull hwport/ubuntu:<tag 이름> <tag 이름>: Pulling from hwport/ubuntu ... Status: Downloaded newer image for hwport/ubuntu:<tag 이름> # docker images REPOSITORY TAG IMAGE ID CREATED SIZE hwport/ubuntu <tag 이름> <image-id> <created-time> <image-size> ...
- "<tag 이름>" : ubuntu 배포판 및 용도에 따른 tag 이름입니다. (https://hub.docker.com/r/hwport/ubuntu/tags)
- "latest" : Ubuntu 기반의 개발환경을 지칭하는 master tag/branch 이름 (현재 만들고 있는 개발환경)
- "20.04" : Ubuntu 20.04 LTS 기반의 개발환경을 지칭하는 tag 이름
- "20.04-systemd" : Ubuntu 20.04 LTS 기반의 systemd 기준 기초 tag 이름
- "18.04" : Ubuntu 18.04 LTS 기반의 개발환경을 지칭하는 tag 이름
- "16.04" : Ubuntu 16.04 LTS 기반의 개발환경을 지칭하는 tag 이름
- "14.04" : Ubuntu 14.04 LTS 기반의 개발환경을 지칭하는 tag 이름
- "12.04" : Ubuntu 12.04 LTS 기반의 개발환경을 지칭하는 tag 이름
- "www" : apache + php 웹 서버 기본 구동 환경을 지칭하는 tag 이름
- 현재 보고 계신 이 사이트는 이 이미지를 사용하여 구축한 것입니다.
- "kvm" : KVM+QEMU (libvirt) 환경을 지칭하는 tag 이름
[JPG image (117.84 KB)]
- "strongswan" : strongSwan을 이용한 IPSecVPN 환경 tag 이름
- "smp86xx" : Ubuntu 12.04 LTS 기반의 Sigmadesigns의 smp86xx chipset 개발환경을 지칭하는 tag 이름
- "<tag 이름>" : ubuntu 배포판 및 용도에 따른 tag 이름입니다. (https://hub.docker.com/r/hwport/ubuntu/tags)
1.3. container 구동(run) 및 초기 설정방법
보다 자세한 구동 방법은 위에 명시한 github source repository 에서 clone 받으셔서 docker-compose 설정을 참고하시면 좀더 자세한 구동을 이해하실 수 있습니다.
- container 구동(run)
# docker run -d -h "<container-hostname>" --name "<container-name>" -p <SSH-host-port>:22 [--privileged] [-v "<local-volume-path>:<container-volume-path>"] "hwport/ubuntu:<tag 이름>" ... # docker container ls --all CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES <container-id> hwport/ubuntu:<tag 이름> "/usr/sbin/sshd -D" <created-time> <status> 0.0.0.0:<SSH-host-port>->22/tcp <container-name> ...
"<container-hostname>"
: container 내에서의 hostname을 의미합니다."<container-name>"
: container 의 이름입니다."<SSH-host-port>"
: container 실행 호스트(외부)로의 SSH 접속 포트를 지정합니다."--privilieged" 옵션
: container 내에서 권한이 필요한 실행을 해야 하는 경우 필요합니다.-v "<local-volume-path>:<container-volume-path>"
: container 실행환경의 directory(local-volume-path)를 container 내부의 directory(container-volume-path)에 투영(공유)하고자 하는 경우 사용할 수 있는 옵션입니다.<container-id>
: container 구동(run)시 자동으로 생성되는 식별자입니다. "<container-name>" 가 지정되지 않아도 이것으로 제어가능합니다.
- container 내에 계정 추가
# docker exec -i -t <container-name> /bin/bash root@<container-hostname>:/# useradd -c "<comment>" -d "/home/<myaccount>" -g users -G users,adm,sudo -m -s /bin/bash <myaccount> root@<container-hostname>:/# passwd <myaccount> Enter new UNIX password: <myaccount's password> Retype new UNIX password: <myaccount's password> passwd: password updated successfully root@<container-hostname>:/# exit
<myaccount>
: container 환경에서 사용하고자 하는 계정이름입니다. SSH 접속시 반드시 필요합니다."<comment>"
: 계정에 대한 간단한 설명등을 의미합니다.<myaccount's password>
: 추가한 사용자 계정의 암호를 입력합니다.
1.4. container SSH 접속 방법
- 기본적으로 container 에 SSH를 기본으로 접속하도록 구성되므로 다음과 같이 SSH 접속하실 수 있습니다.
# ssh -o port=<SSH-host-port> <myaccount>@localhost The authenticity of host '[localhost]:<SSH-host-port> ([::1]:<SSH-host-port>)' can't be established. ECDSA key fingerprint is SHA256:<...>. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[localhost]:<SSH-host-port>' (ECDSA) to the list of known hosts. <myaccount>@localhost's password: <myaccount's password> <myaccount>@<container-hostname>:~$ <in-container environment now...>
- localhost : 이 부분은 docker 실행환경의 IP 주소로 대체하여 접속하시면 원격에서 접속하실 수 있습니다.
1.5. 참고자료
- 우분투(Ubuntu) 가상머신(Virtual Machine) 서버 환경 구축
- Docker 개발환경 - Sigmadesigns chipset 개발환경
- 이재홍님의 Docker 원고
- Docker 의 Network 구조에 대한 이해를 위한 내용
- Docker image를 빌드하기 위한 Dockerfile 작성 예
- 시작하세요! 도커/쿠버네티스 - 위키북스